2016-07-19 3 views
-3

Я пытаюсь выполнить скрипт ниже, чтобы переименовать все файлы в папке. Он работает нормально, но когда я пытаюсь запустить его за пределами папки.Попытка переименования всех файлов в папке

import os 

path=os.getcwd() 
path=os.path.join(path,'it') 
filenames = os.listdir(path) 
i=0 
for filename in filenames: 
    os.rename(filename, "%d.jpg"%i) 
    i=i+1 

'it' - это имя папки, в которой находятся файлы. Ошибка: FileNotFoundError: [Errno 2] Нет такого файла или каталога: «0.jpg» -> «0.jpg» печати показывает имена файлов

+1

, потому что 'os.path.join()' не возвращает то, что вы ожидаете. попробуйте распечатать «путь», чтобы увидеть. Причиной этого является 'os.getcwd()'. Когда вы не знаете, почему все идет не так, как ожидалось, распечатайте переменные или отлаживайте, чтобы узнать, какие значения они берут и работают оттуда. –

+0

Проблема скорее в 'os.listdir (path)', которая возвращает имена файлов вместо dir + filenames. – Sosel

+0

@ Ev.Kounis спасибо за отзыв. Новичок для python –

ответ

4

Когда вы делаете os.listdir(path) вы получите имена файлов в , но не полный путь к этим файлам. Когда вы вызываете os.rename, вам нужен путь к файлу, а не только имя файла.

Вы можете присоединиться к имени файла по пути его родительской папки, используя os.path.join. . os.path.join(path, file).

Нечто подобное может работать:

for filename in filenames: 
    old = os.path.join(path, filename) 
    new = os.path.join(path, "%d.jpg"%i) 
    os.rename(old, new) 
    i=i+1 
0

Вы должны упомянуть полный или относительный путь к файлу.

В этом случае она должна быть

path + '/' + filename 

или в более общем плане,

newpath = os.path.join(path, filename) 
Смежные вопросы