Я пытаюсь переименовать файлы в одной папке, по шаблону 0001, 0002, 0010, 0100 и т. Д. Я очень плохо знаком с Python, поэтому извините за то, что спросил что-то столь простое.
Я искал вокруг, и большая часть кода, с которым я сталкивался, переименовывает файлы (не так, как я хочу) или удаляет определенные символы. Я также сталкивался с кодом, который использует дополнительные модули (glob), которые только ведут меня дальше по кроличьей норе. Большая часть того, что я вижу, заставляет мою голову кружиться; на данный момент мои навыки не выходят за рамки простых функций, если, когда, для, в то время как заявления и так далее.
Я собрал воедино некоторый код, который я (несколько) понимаю, но он не работает.
import os
dir = os.listdir("D:\\temp\\Wallpapers")
i = 0
for item in dir:
dst ="000" + str(i) + ".jpg"
src = item
dst = item + dst
# rename() function will
# rename all the files
os.rename(src, dst)
i += 1
Это ошибка, которую я получаю:
Traceback (most recent call last):
File "rename.py", line 14, in <module>
os.rename(src, dst)
FileNotFoundError: [WinError 2] The system cannot find the file specified: '00-Pyatna.jpg' -> '0000.jpg'
2 ответа
Это не работает, потому что вы, вероятно, не в правильном каталоге, и вы пытаетесь найти эти файлы в каталоге, в котором вы сейчас находитесь. Вы должны сделать это, используя абсолютные пути. Смотрите следующий код
import os
base_path = "D:/temp/Wallpapers"
files = os.listdir(base_path)
for i, fp in enumerate(files):
dst = os.path.join(base_path, "{0:04d}.jpg".format(i))
src = os.path.join(base_path, fp)
os.rename(src, dst)
Во-первых, вы можете получить максимальное количество, уже присутствующее в вашей папке, с помощью следующей функции
import re
def max_counter_in_files(folder):
files = os.listdir(folder)
maxnum = '0'
if files:
maxnum = max([max(re.findall("[\d]+", file)) for file in files])
return maxnum
Например, если ваша папка содержит файлы
file001.txt
file002.txt
file003.txt
Тогда max_counter_in_files('path/to/your/files')
вернется 3
.
Во-вторых, вы можете использовать эту функцию для увеличения вашего следующего имени файла при добавлении новых файлов. например,
counter = int(self.max_counter_in_files(dest_path))
filename = f"filename{counter+1:04d}.txt"
filename
тогда будет "filename0004.txt"
.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.