Получение ошибки «Процесс не может получить доступ к файлу» при удалении файла в Python - PullRequest
0 голосов
/ 25 апреля 2020

Я работаю над проектом, в котором много json файлов хранятся в каталоге. Мне нужно прочитать все файлы и проверить там данные. Если в любом из файлов 'session is false`, мне нужно удалить файл. Ниже приведен код:

files = os.listdir(config_files_path)
for file in files:
    file_path = config_files_path + '//' + file
    f = open(file_path)

    data = json.load(f)

    if not data['session']:
        # delete this file
        os.remove(file_path)

В приведенном выше коде я получаю список всех файлов. Затем перебираем каждый файл и читаем его содержимое в data. if not data['session'], мне нужно удалить этот файл. Но при этом я получаю process cannot access the file as its being used by another process. Есть ли способ, которым мы можем удалить файл. Пожалуйста помоги. Спасибо

Ответы [ 2 ]

5 голосов
/ 25 апреля 2020

Вам необходимо закрыть файл перед его удалением. Используйте f.close () перед оператором os.remove (file_path)

1 голос
/ 25 апреля 2020

Ошибка возникает из-за того, что файл все еще открыт. Вы должны закрыть его, прежде чем пытаться удалить его. Итак, после загрузки данных выполните f.close(). Как это:

files = os.listdir(config_files_path)
for file in files:
    file_path = config_files_path + '//' + file

    f = open(file_path)
    data = json.load(f)
    f.close()  # <-- close the file

    if not data['session']:
        # delete this file
        os.remove(file_path)
...