переименовать файлы в Python: WindowsError: [Ошибка 2] Система не может найти указанный файл

Я посмотрел на код здесь, и это не выглядит так сложно.

Не удается разрешить WindowsError: [Ошибка 2] Системе не удается найти указанный файл

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

Вот что у меня есть до сих пор при переименовании папок в каталоге:

import os
from os import rename, listdir

path = r"E:\myFolder"
dirList = os.listdir(path)
print str(dirList)

for name in dirList:
    nameOrig = (name[0:(len(name)-12)])
    nameRename = nameOrig + "City"
    os.rename((os.path.join(path, nameOrig), os.path.join(path, nameRename))

Большое спасибо


person Jook    schedule 23.01.2014    source источник
comment
Если бы сообщение об ошибке появилось без оператора печати из строки 6, я бы заподозрил, что у вас нет папки с именем E:\myFolder. Вы?   -  person Jim    schedule 23.01.2014
comment
В качестве альтернативы ваше переименование не использует фактическое имя файла, поэтому я ожидаю, что оно потерпит неудачу. Обратите внимание, что для файла с именем foo456789012345 вызов переименования попытается переименовать E:\myFolder\foo в E:\myFolder\fooCity. Разве в последней строке вы не должны использовать name, а не nameOrig?   -  person Jim    schedule 23.01.2014


Ответы (2)


1) Я не уверен, что делает (name[0:(len(name)-12)])... name должно быть именем самого каталога для переименования, которое, я бы сделал вывод, это nameOrig

2) os.rename((os.path.join(path, nameOrig), os.path.join(path, nameRename)) имеет несбалансированные скобки. Опечатка?

Это работает для переименования вещей в моем каталоге, если я удаляю одну открытую скобку в начале вызова функции rename. и установите nameOrig = name

*Примечание. Я использую Linux-версию Python, которая может обрабатывать или не обрабатывать результаты из списка каталогов по-разному.

person Ryan J    schedule 23.01.2014

Большое спасибо за Вашу помощь. Джим был прав, мне нужно использовать «имя» вместо «имяОриг» в последней строке. И спасибо Райану Дж., который поймал лишнюю пару.

Строка, которая говорит

nameOrig = (имя[0:(длина(имя)-12)])

предполагается удалить последние 12 символов и заменить их новым именем. В данном случае это «Город».

Итак, у меня были имена папок, называемые

031_Индианаполис 032_Индианаполис 033_Индианаполис 034_Индианаполис ...и так далее...

а я поменял на 031_Город 032_Город 033_Город 034_Город....

Вот окончательный код:

импортировать os из os import rename, listdir

path = r"E:\myFolder" dirList = os.listdir(path) print str(dirList)

для имени в dirList: nameOrig = (name[0:(len(name)-12)]) nameRename = nameOrig + "City" os.rename(os.path.join(path, name), os.path.join( путь, имяПереименовать))

print "/n все обработано"

person Jook    schedule 27.01.2014