Проверьте, доступен ли файл (не используется другим процессом) в Python - PullRequest
0 голосов
/ 21 декабря 2010

Я ищу код для проверки, доступен ли файл в файловой системе (не используется другим процессом). Как я мог сделать это в Python? Спасибо!

Как я буду его использовать: циклически проверять, доступен ли файл и когда он есть (процессам он больше не нужен), удалить его.

Ответы [ 3 ]

2 голосов
/ 21 декабря 2010
while True:
    try:
        os.remove(yourfilename) # try to remove it directly
    except OSError as e:
        if e.errno == errno.ENOENT: # file doesn't exist
            break
        time.sleep(5)
    else:
        break
0 голосов
/ 21 декабря 2010

Не уверен, что вы используете Linux. Я думаю, что вы ищете, чтобы реализовать функциональность "fuser" в Python.

Если вы работаете в Linux, вы можете перебирать идентификаторы процессов в файловой системе '/ proc' и проверять файлы, на которые ссылаются эти процессы. Проверьте этот скрипт fuser.py . Вы можете использовать тот же подход и адаптировать приведенный выше код к вашим потребностям.

0 голосов
/ 21 декабря 2010

Если файл другого процесса имеет открытый файл, и вы удаляете его, он не будет удален из файловой системы, пока все процессы не закроют свои дескрипторы для него.

Если другому процессу просто нужен дескриптор файла /Объект для продолжения работы вы можете безопасно удалить файл, он будет удален, когда процесс закроет свой дескриптор.Если вы хотите иметь возможность вызывать open () для файла до тех пор, пока процесс не завершит его, оба процесса должны использовать блокировки (см. Fcntl.flock ()).

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