В настоящее время у меня есть родительский каталог с 10 папками с 10 различными датами для имен (например, 2016-11-21 и т.д.) В этих папках даты находятся файлы WAV с уникальными именами файлов.

Отдельно у меня есть соответствующие TXT-файлы с тем же именем, но в настоящее время они не находятся в папках с соответствующими WAV-файлами. Как я могу сделать это так, чтобы, если имена файлов совпадали, файл TXT перемещался в существующую папку в родительском каталоге?

В настоящее время у меня есть эта структура:

/Folder1/File1.TXT
/Folder1/2011-11-21/File1.WAV

Я хочу что-то такое, что структура станет:

/Folder1/2011-11-21/File1.TXT
/Folder1/2011-11-21/File1.WAV

Это возможно? Спасибо

1 ответ1

0

Вы можете использовать glob и shutil для выполнения вашей задачи.

Обратите внимание, что WAV и TXT чувствительны к регистру, поэтому вам нужно будет внести соответствующие изменения или добавить что-то для проверки обоих.

import os
import glob
import shutil

# Create a list of WAV files.  If you put in txt directory, remove Folder1; otherwise, put full path.
wav_files = glob.glob('Folder1/**/*.WAV')

# Create a list of text files to move
txt_files = glob.glob('Folder1/*.TXT')

# Check OS for file separator since that is not provided
if os.name == 'nt':
    separator = '\\'
else: 
    separator = '/'

for txt in txt_files:
    # [-1] takes the last part of the path
    # .strip removes .TXT from the file name 
    txt_name = txt.split(separator)[-1].strip('.TXT')
    for  wav in wav_files:
        wav_name = wav.split(separator)[-1].strip('.WAV')
        wav_path = wav.strip(txt_name + '.WAV')
        # Check if the wav_name and txt_name are the same.  
        # There is no check for case.    
        if wav_name == txt_name:
            shutil.move(txt, wav_path)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .