Как определить, можно ли переименовать файл перед использованием os.rename - PullRequest
0 голосов
/ 14 июня 2019

Я бы хотел определить, можно ли переименовать файл перед вызовом 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',
                      ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...