将具有相同名称但不同扩展名的文件移动到包含相同名称文件的现有位置

将具有相同名称但不同扩展名的文件移动到包含相同名称文件的现有位置

我目前有一个父目录,其中有 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

您可以使用 glob 和 humil 来完成您的任务。

请注意,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)

相关内容