path.rename сохраняет файлы в корневую папку
Есть скрипт для переименования файлов по порядку, которые находятся по пути "D:/files". По окончанию работы скрипта файлы сохраняются в корневую папку, в которой находится main.py
Как сохранить переименованные файлы в папку в которой они лежат изначально, тобишь в "D:/files" ?
import pathlib
folder = "D:/files"
filename = input('Введите имя файлов:')
path = pathlib.Path(folder)
for i, path in enumerate(path.glob('*.jpg')):
new_name = str(filename) + ' ' + '[' + str(i) + ']' + path.suffix
path.rename(new_name)
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
rename на самом деле не переименование (не только переименование), а перемещение.
Чтобы при перемещении файл остался в той же папке, в которой был, нужно к имени слева добавить путь к папке. Например, взять path, который у вас снаружи цикла:
base_path = pathlib.Path(folder)
for i, path in enumerate(base_path.glob('*.jpg')):
new_name = str(filename) + ' ' + '[' + str(i) + ']' + path.suffix
path.rename(base_path / new_name)
Либо брать исходный путь к файлу из path внутри цикла:
path.rename(path.parent / new_name)
По поводу формирования имени файла:
filenameне нужно оборачивать вstr, т.к.inputи так вернул строку- В целом, удобнее использовать форматирование строк (например, f-строки), а не склеивать из кусков
Можно переписать эту строку так:
new_name = f"{filename} [{i}]{path.suffix}"