0
0 комментариев

Доброго времени суток!
Мне дали такое вот задание: «Задан путь к директории с музыкальными файлами (в названии которых нет номеров, а только названия песен) и текстовый файл, хранящий полный список песен с номерами и названиями в виде строк формата «01. Freefall [6:12]». Напишите скрипт, который корректирует имена файлов в директории на основе текста списка песен.»
Я его, в принципе, сделал, но есть нюансы. Во-первых, наверняка переименовывание можно было сделать без вот этих двух циклов, а как-нибудь проще. Во-вторых, если есть файлы со схожими названиями, например, Dog.mp3 и Dogs.mp3, скрипт найдет и переименует файл Dog.mp3 два раза. Ну и сам вопрос: какой есть оптимальный способ решения этих проблем?

def fix_names(folder, textfile):
    names = open(textfile, 'r').read().splitlines() #Собираю имена файлов из файла
    tracks = [file for file in os.listdir(folder)] #Собираем список файлов в папке
    for track in tracks:
        for name in names:
            if track.split('.')[0] in name:
                os.rename(folder+os.path.sep+track, folder+os.path.sep+name.split(' ')[0]+' '+track)

Список файлов выглядит, например, так:

За облаками.mp3
Лай.mp3
Мечтай.mp3

Содержимое файла вот так:

01. Лай [2:51]
02. Мечтай [3:15]
03. За облаками [3:20]


Добавить комментарий