如何使用python将多个文件从子目录传输到单个路径文件夹?

如何使用python将多个文件从子目录传输到单个路径文件夹?,python,pandas,directory,glob,shutil,Python,Pandas,Directory,Glob,Shutil,我有一个Wav文件的名称(所有唯一)列表- 2003211085_2003211078_ffc0d543799a2984c60c581d.wav 2003214817_2003214800_92720fb19bf9216c2f160733.wav 2003233142_2003233136_8c42d206701830dff6032d41.wav 2003256235_2003256218_4e71bf77b0ffb907990d2e30.wav 2003276239_2003276196_da

我有一个Wav文件的名称(所有唯一)列表-

2003211085_2003211078_ffc0d543799a2984c60c581d.wav
2003214817_2003214800_92720fb19bf9216c2f160733.wav
2003233142_2003233136_8c42d206701830dff6032d41.wav
2003256235_2003256218_4e71bf77b0ffb907990d2e30.wav
2003276239_2003276196_dad6aff70f37817fcd75ffb8.wav
2003352182_2003352170_b1f2990d5f867408cc39c445.wav
有一个名为\019\Recordings的目录,其中所有这些文件都位于不同的子文件夹下。 我想编写一个python应用程序,根据这些wav文件的唯一名称从所有这些子文件夹中提取这些wav文件,并将它们放置到单个目标文件夹中

我是python新手,并尝试使用-

import glob, os
import shutil

target_list_of_wav_names = ["2003211085_2003211078_ffc0d543799a2984c60c581d.wav",
"2003214817_2003214800_92720fb19bf9216c2f160733.wav",
"2003233142_2003233136_8c42d206701830dff6032d41.wav"
"2003352182_2003352170_b1f2990d5f867408cc39c445.wav"]

for file in glob.glob('//19/Recordings*.wav', recursive=True):
    print(file)
    if file in target_list_of_wav_names:
        shutil.move(file, "C:/Users/ivd/Desktop/autotranscribe"+file)
但文件不会反映在目标文件夹中


如何解决这个问题?

glob只是一个基于通配符查找文件的实用程序。它返回与查询匹配的文件字符串

import glob, os
import shutil

target_list_of_wav_names = ['example_wav1.wav','example_wav2.wav',...... etc]

for file in glob.glob('/019/Recordings/*.wav', recursive=True):
    print(file)
    if file in target_list_of_wav_names:
        shutil.move(file, "/mydir/"+file)
因此,您仍然需要使用另一个函数实际移动文件

您可以使用
os.rename
shutil.move
来移动它

for file in glob.glob("*.wav"):
    os.rename(file, f'destinationfolder/{file}')

您只需在“shutil”模块中使用“copy”和“copy2”,了解如何调用它们来执行所需的复制。添加/到“C:/Users/ivd/Desktop/autotranscribe/”的末尾我有一个新手问题,这将如何根据我拥有的特定文件名提取文件?我不希望它从源目录\019\Recordings中拾取所有wav文件。我只想让它拾取上面列出的特定文件,然后将这些文件传输到目标文件夹查看此网站了解如何使用glob。因此,您需要更改argumentQuestion中使用的模式-我在哪里提到\019\Recordings的源文件夹?它如何知道我正在根据我提到的名称查找特定的wav文件,而不仅仅是所有的*wav文件。使用路径示例编辑了我的答案,不确定我是否理解您的文件结构。好的,让我用一个示例进行解释-假设您有录音(wav)的文件名,并希望从路径中提取它们。此路径有多个子文件夹。因此,您不能真正手动查看每个子文件夹来提取每个wav。所以现在为了自动化这个脚本,我只想从源文件夹中提取这些特定的文件名,它将获取这些特定的WAV并将它们放在目标文件夹中。在你的脚本中,我在哪里可以提到我正在尝试提取的.wav的具体名称?你是说target_list_of_wav_names=[wav1.wav,wav2.wav,….等等]我测试了脚本。但是,它运行时,目标文件夹/019/Recordings中的wav文件没有传输到目标文件夹/mydir/