Я пытаюсь переименовать несколько файлов, хранящихся в подкаталогах, удалив последние четыре символа в их базовом имени. Я обычно использую glob.glob()
для поиска и переименования файлов в одной директории с помощью:Как переименовать файлы с помощью os.walk()?
import glob, os
for file in glob.glob("C:/Users/username/Desktop/Original data/" + "*.*"):
pieces = list(os.path.splitext(file))
pieces[0] = pieces[0][:-4]
newFile = "".join(pieces)
os.rename(file,newFile)
Но теперь я хочу повторить выше во всех подкаталогах. Я попытался с помощью os.walk()
:
import os
for subdir, dirs, files in os.walk("C:/Users/username/Desktop/Original data/"):
for file in files:
pieces = list(os.path.splitext(file))
pieces[0] = pieces[0][:-4]
newFile = "".join(pieces)
# print "Original filename: " + file, " || New filename: " + newFile
os.rename(file,newFile)
print
заявление правильно печатает оригинал и новые имена, которые я в поисках, но os.rename(file,newFile)
возвращает следующее сообщение об ошибке:
Traceback (most recent call last):
File "<input>", line 7, in <module>
WindowsError: [Error 2] The system cannot find the file specified
Как я могу решить эту проблему ?
Я считаю, вы должны передать os.raname полного пути к файлу и так вы не являетесь в том же каталоге, что и прогулка ... –
@RafaelRodrigoDeSouza - Спасибо, вы правы, как описано в ответе Ниемми =) – Joseph