milapm Ответов: 2

Как дать несколько имен путей в качестве второго аргумента в rename() для переименования файлов.


У меня есть папка "кино". Внутри этой папки есть несколько различных вложенных папок фильмов с видеофайлом и файлом субтитров. Например, Мстители, плохие парни, океан 11 и т. д. Эти подпапки с названиями фильмов содержат видеофайлы вместе с файлами субтитров. Я хочу переименовать файлы субтитров так же, как и имя папки с фильмами. Например, если мой файл субтитров находится в папке с именем "MOVIEx", то я хочу, чтобы имя моего файла субтитров было изменено на "MOVIEx". Я не знаю, как указать несколько местоположений пути во втором аргументе .rename (), поскольку эта функция принимает только один путь dest, в то время как у меня есть несколько путей с разными именами файлов субтитров.

Что я уже пробовал:

# to walk through all the folders and subfolders in directory 'Movies'.
for foldername,subfoldername,filename in os.walk(r'E:\Movies'):
    # to check for the subtitle file.
    if filename.endswith('(.srt|.idx|.sub)'):
        # change the subtitle file name with movie subfolder name.
        os.rename()

2 Ответов

Рейтинг:
2

Dave Kreskowiak

АФАИК, ты этого не сделаешь. Вы переименовываете каждый файл, по одному за раз.


Рейтинг:
2

Patrice T

Цитата:
Как дать несколько имен путей в качестве второго аргумента в rename() для переименования файлов.

Короткий ответ: Нет.
- Вам нужно рекурсивно сканировать дерево каталогов.
- для каждого файла, который вы хотите переименовать.
- вы разделываете путь к файлу, чтобы извлечь фактическое имя подкаталога.
- вы собираете новое имя файла из деталей, которые у вас есть.
- а потом вы делаете переименование.