Я бы хотел определить, можно ли переименовать файл перед вызовом os.rename
. Я попытался использовать os.access(path, os.W_OK)
, но он возвращает True
, даже если файл не может быть переименован. Я предполагаю, что доступ для записи отличается от доступа для переименования.
Моя программа берет список имен файлов чертежей. Названия чертежей имеют номера листов, закодированные в неудобном формате. Программа извлекает номер чертежа и номер листа (из имени файла), а затем добавляет «Лист 1 из 3», «Лист 2 из 3» и т. Д. В соответствии с чертежами. В документах говорится, что лучше всего использовать EAFP, но я бы хотел, чтобы я не мог переименовывать любых файлов из группы листов, даже если только один не может быть переименован. Используя EAFP, я мог бы переименовать чертеж, а затем узнать, что один из сопутствующих чертежей не может быть переименован.
Единственное решение, которое я до сих пор представлял, - это переименовать все файлы с одинаковыми именами, т. Е. os.rename(oldName, oldName)
, сохранить, какие из них не удалось, а затем только применить новые имена к наборам чертежей, которые не вызывали ошибок. Это сработало бы, но это выглядело довольно большим взломом.
Есть предложения?
badfilenames = ['00_3214.dwg', '01_3214.dwg', '02_3214.dwg',
'00_7321.dwg', '02_7321.dwg',
'00_8821.dwg',
]
generatedfilenames = ['3214 Sheet 1 of 3.dwg', '3214 Sheet 2 of 3.dwg', '3214 Sheet 2 of 3.dwg',
'7321 Sheet 1 of 2.dwg', '7321 Sheet 2 of 2.dwg',
'8821 Sheet 1 of 1.dwg',
]