Python не видит файл в папке и отказывается с ним работать
Решил написать программу для переименования массива файлов, отличающихся грубо говоря номером файла. Для тестов решил пока работать только с одним экземпляром. Вот код программы:
import os
in_downloads = input('Файл находится в папке "downloads"?\n')
if in_downloads.lower() == "да":
directory = 'C:/Users/Артемий.Дмитрий-ПК/Downloads'
else:
directory = input('Ведите путь до папки, в которой находится файл (не забудьте заменить "\\" на "/") \n') # directory = 'D:/JoJo/манга'
name = 'Bleach - Digital Colored Comics Том 23 Глава 201 [mangalib.me].zip' #input('Введите название архива с мангой: \n')
new_name = 'блич глава 201' # имя на переименовку
spisok = str(os.listdir(directory))
print(spisok) #вывод всего содержимого в папке
ind = spisok.find(name) #нахождение индекса нужного элемента
print("Искомый объект расположен под номером ", ind) #вывод этого индекса
count = spisok.count(name)
if name in spisok:
print('Файл находится в папке ', directory)
os.rename(name, new_name)
print("Файл успешно переименован!")
else:
print('Объекты с таким именем не найдены :(')
На этапе переимнования файла выдает ошибку
Traceback (most recent call last):
File "D:/JoJo/goose/ballance/files_to_edit/manga_renamer.py", line 26, in <module>
os.rename(name, new_name)
FileNotFoundError: [WinError 2] Не удается найти указанный файл: 'Bleach - Digital Colored Comics Том 23 Глава 201 [mangalib.me].zip' -> 'блич глава 201'
Для того, чтобы убедиться, что проблемма не в самом файле, сделал несколько проверок на его наличие. После чего полное выполнение программы в терминале PyCharm'а выглядит так:
Файл находится в папке "downloads"?
нет
Ведите путь до папки, в которой находится файл (не забудьте заменить "\" на "/")
D:/JoJo/манга
Traceback (most recent call last):
File "D:/JoJo/goose/ballance/files_to_edit/manga_renamer.py", line 26, in <module>
os.rename(name, new_name)
FileNotFoundError: [WinError 2] Не удается найти указанный файл: 'Bleach - Digital Colored Comics Том 23 Глава 201 [mangalib.me].zip' -> 'блич глава 201'
['Bleach - Digital Colored Comics Том 23 Глава 201 [mangalib.me].zip', 'text_doc.txt', 'Новая папка']
Искомый объект расположен под номером 2
Файл находится в папке D:/JoJo/манга
При попытке запустить файл даблкликом по нему, то программа после ввода пути до файла просто закрывается
Ответы (2 шт):
Кажется что здесь не нужен str()
, просто:
spisok = os.listdir(directory)
Плюс при переименовании не учтена папка:
os.rename(os.path.join(directory, name), os.path.join(directory, new_name))
Ошибка здесь:
os.rename(name, new_name)
В переменной name
у вас только имя файла, а не путь к нему. Значит, файл ищется в актуальной папке, но там он не находится.
Или примените полный путь к файлам name
и new_name
, или измените перед этой командой актуальную папку командой
os.chdir('C:/Users/Артемий.Дмитрий-ПК/Downloads')