Переименовать текстовый файл. Отредактированная версия: [Ошибка 183] Невозможно создать файл, если этот файл уже существует
Я работаю с Python 2.7x. Я новичок в Python и буду очень признателен за вашу помощь. Я прочитал много сообщений, включая показанные ниже, чтобы назвать несколько об этой ошибке:
WindowsError: [Ошибка 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессом: 'new.dat' -> моя инструкция по закрытию файла уже завершена.
python 2 [Ошибка 32] Процесс не может получить доступ к файлу, потому что он используется другим процессом -> Я не могу использовать shutil, так как в используемой программе python есть какая-то ошибка, и я не могу отредактировать путь как мой компьютер является административно защищенным.
Переименовать файлы в Python -> После предложения я получил NameError: имя 'rename' не определено...:/
и т. д.
После попытки исправить мои коды, я все еще получаю ту же ошибку.
Что я хотел бы сделать: я читаю файлы в каталоге, если какой-либо из файлов содержит определенную строку, я бы переименовал текстовый файл (т.е. first.txt в firstfound.txt.)
РЕДАКТИРОВАННАЯ ВЕРСИЯ: я попытался переместить abc.close() перед тем, как переименовать файл:
import os
fname = raw_input("Enter file name: ")
#fill in file directory here
abc = open(fname)
for line in abc:
if not line.find("scramble") :
continue
oldfile = fname
abc.close()
if oldfile == fname:
for title in fname:
endname = title.find('.txt')
oldtitle = title[:endname]
newfile = oldtitle +"found.txt"
os.rename(oldfile,newfile)
Но у меня есть эта ошибка вместо последней строки. os.rename(oldfile,newfile) WindowsError: [Ошибка 183] Невозможно создать файл, если этот файл уже существует. В моей папке нет файла с новым именем. Большое спасибо за ваш совет!
РЕДАКТИРОВАННАЯ ВЕРСИЯ 2: Я также пробовал этот другой набор кодов, но он дал мне WindowsError: [Ошибка 5] Доступ запрещен. Могу ли я узнать, есть ли такая вещь, что я не могу переименовать TXT-файл, потому что у меня нет прав администратора? Спасибо!
import os
fname = raw_input("Enter file name: ")
#fill in file directory here
abc = open(fname)
for line in abc:
if not line.find("scramble") :
continue
oldfile = fname
abc.close()
if (oldfile == fname): #+'/' + "a.txt"
for title in fname:
endname = title.find('.txt')
oldtitle = title[:endname]
new_file = oldtitle +'/' + "a.txt"
os.rename(fname,new_file)
ПЕРВОНАЧАЛЬНАЯ версия: я получил ошибку в строке os.rename. "WindowsError: [Ошибка 32] Процесс не может получить доступ к файлу, потому что он используется другим процессом"
Весь мой программный код показан ниже:
import os
fname = raw_input("Enter file name: ")
#fill in file directory here
abc = open(fname)
for line in abc:
if not line.find("scramble") :
continue
old_file = fname
for title in fname:
endname = title.find('.txt')
oldtitle = title[:endname]
new_file = oldtitle +'/' + "found.txt"
os.rename(old_file,new_file) ##WindowsError: [Error 32] The process cannot access the file because it is being used by another process
abc.close()
Я не понимаю, почему эта ошибка сохраняется. (Я закрыл все файлы и папки). Большое спасибо!
1 ответ
Скорее всего, проблема связана с вашим вызовом open() в вашем коде. Функция open() в python открывает файл для чтения / записи, поэтому, если вы открываете файл, вы не можете вызвать для него переименование, так как он открыт в другом месте.
Вместо этого вы должны позвонить
abc.close()
перед переименованием вашего файла.
Смотрите эту ссылку для получения дополнительной информации о файловом вводе / выводе.