Я работаю с python 2 и прочитал несколько сообщений об этой ошибке i.e (this post). Однако я все еще получаю ошибку. Что я делаю: Я читал файлы в каталоге, если какой-либо из файлов содержит определенную строку, я удаляю каталог.python 2 [Ошибка 32] Процесс не может получить доступ к файлу, потому что он используется другим процессом
def select_poo():
path = os.walk('/paila_candonga/')
texto = 'poo'
extension = '.tex'
for root, dirs, files in path:
for documento in files:
if extension in documento:
with open(os.path.join(root, documento), 'r') as fin:
for lines in fin:
if texto in lines:
shutil.rmtree(root)
else:
continue
Тогда я получаю ошибку:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
Я также попытался использовать абсолютный путь:
def select_poo():
path = os.walk('/paila_candonga/')
texto = 'poo'
extension = '.tex'
for root, dirs, files in path:
for documento in files:
if extension in documento:
with open(os.path.join(root, documento), 'r') as fin:
for lines in fin:
if texto in lines:
route = (os.path.join(root, documento))
files = os.path.basename(route)
folder = os.path.dirname(route)
absolut= os.path.dirname(os.path.abspath(route))
todo = os.path.join(absolut, files)
print todo
else:
continue
Тогда я получаю:
C:\paila_candonga\la_Arepa.tex
C:\paila_candonga\sejodio\laOlla.tex
C:\paila_candonga\sejodio\laPaila.tex
Если я удалить один файл за раз, используя тот же абсолютный путь, d os.remove (''), у меня не будет проблем. Если я попытаюсь удалить все файлы одновременно с помощью select_poo() и shutil.rmtree (папка) или os.remove (absolut), у меня будет ошибка 32.
Есть ли способ, которым я могу выполнить цикл через каждый путей в todo и удалить их без ошибки 32?
Спасибо,
Спасибо Алекс, но это не будет Работа. Ошибка все еще существует = ( –
@ Chüngel, вы уверены, что у вас нет этой папки или какого-либо файла из этой папки, открытого в любом другом приложении? – Alex
Alex, я довольно новичок в Python, но если я удалю файлы с помощью os .remove (absolut) одни и те же файлы будут удалены без ошибок. Поэтому я считаю, что ошибка вызвана процессом, за который я удаляю все файлы одновременно. Как вы предположили, я определил переменную x = [], а затем строка найдена в документе, путь будет добавлен в x. Затем за пределами инструкции with я выполняю os.remove (x [0]), но затем получаю точно такую же ошибку. Не могли бы вы предложить версию для мой код, основанный на вашей идее? –