Переименование файлов и папок с помощью os.walk в Python 3 - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь переименовать все файлы и папки в данном каталоге.Я хотел бы заменить пробел дефисом, а затем переименовать все в нижний регистр.Я застрял с кодом ниже.Когда os.rename закомментирован, функция печати возвращает все файлы, как и ожидалось, однако, когда я раскомментирую os.rename, я получаю сообщение об ошибке, указывающее, что файл XYZ -> xyz не может быть найден.

import os

folder = r"C:\Users\Tim\Documents\storage"
space = " "
hyphen = "-"

for root, dirs, files in os.walk(folder):
    for file in files:
        if space in file:
            newFilename = filename.replace(space, hyphen).lower()
            os.rename(file, newFilename)
            print(newFilename)

Obvioulsy, это только для файлов, но я бы хотел применить ту же логику и к папкам.Любая помощь будет с благодарностью.Довольно новый в Python, так что это немного за мной!Большое спасибо.

1 Ответ

0 голосов
/ 29 сентября 2018

os.rename() разрешает относительные пути к файлам (пути, которые не начинаются с / в Linux / Mac или букве диска в Windows) относительно текущего рабочего каталога.

Вам понадобитсяos.path.join() имена с root перед передачей его os.rename(), так как в противном случае переименование будет искать файл с этим именем в текущем рабочем каталоге, а не в исходной папке.

Так что это должнобыть:

os.rename(os.path.join(root, file), os.path.join(root, newFilename))
...