#python #python-3.x #loops #file-rename #file-copying
#python #python-3.x #циклы #файл-переименовать #копирование файлов
Вопрос:
Контекст
-
Необходимо многократно копировать и переименовывать файл изображения, пока не будет достигнуто определенное число отсчетов.
-
Часть переименования должна соответствовать определенному возрастающему шагу.
-
Это
Python 3.7.0
Код
import os
import shutil
import glob
fps = 30
timer = 1 #in seconds
count = fps * timer 1
#input and output file directory
src1 = glob.glob("./src/captured1.jpg")
dest = "./dst/"
#numbering start from 1 with increasing step of 4
for i in range(1,count,4):
for file_path in src1:
print(file_path)
shutil.copy(file_path, dest)
for filename in os.listdir(dest):
os.rename(os.path.join(dest,filename), os.path.join(dest,'image' str(i) '.jpg'))
Вывод
Ожидая, что изображения будут иметь последовательно пронумерованное имя (т.е image1.jpg image5.jpg image9.jpg и так далее)
Проблема
Код работал до image9.jpg , затем остановился в середине трассировки с ошибкой :
Traceback (most recent call last):
File "D:homeusermain.py", line 17, in <module>
os.rename(os.path.join(dest,filename), os.path.join(dest,'captured' str(i) '.jpg'))
FileExistsError: [WinError 183] Cannot create a file when that file already exists: './dst/image5.jpg' -> './dst/image9.jpg'
Как я могу улучшить код?
Комментарии:
1. Из того, что я вижу, у вас проблема, потому что изображения не учитываются с 0, поэтому вам следует просто проверить последнее пронумерованное изображение, получить его имя, из этого получить его номер и продолжить переименование с этого номера
2. Проблема во внутреннем цикле for . Вы берете каждый файл и пытаетесь переименовать его в то же имя файла.
3. @ack разве цикл
str(i)
не должен уже позаботиться об этом?4. Внутри
for filename in os.listdir(dest):
циклаi
ничего не меняется.