os.rename () работает с открытыми файлами в Mac.какая альтернатива? - PullRequest
1 голос
/ 21 февраля 2011

Мне нужен был механизм в Python, с помощью которого я мог бы определить, открыт ли файл каким-либо другим приложением или нет.Для Windows, решение, которое работало для меня, пыталось переименовать файл.Windows не позволяет вам переименовывать файл, если он все еще открыт каким-либо другим приложением.

К сожалению, это не сработало на Mac.Mac OS X позволяет вам переименовывать файл, когда он открыт другим приложением.Кажется, это полезная функция, специально встроенная в систему (см. « Переименование открытых файлов »).

Что может быть альтернативным решением для Mac OS X, чтобы я мог выяснить,какое-то приложение держит файл или нет?

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

Попробуйте os.open с флагом O_EXLOCK.

Возможно, это не общее решение, но оно должно работать на Unix-подобных системах, включая Mac.

0 голосов
/ 21 февраля 2011

Нет общего решения этой проблемы. Если у вас есть контроль над другими приложениями, использующими файл, вы можете использовать какой-либо вид файлов блокировки. Но если вы просто хотите узнать, имеет ли какое-либо приложение открытый дескриптор файла для какого-либо файла, не существует независимого от платформы решения - будь то на Python или на любом другом языке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...