【问题标题】:How to transfer multiple files from sub directories to a single path folder using python?如何使用 python 将多个文件从子目录传输到单个路径文件夹?
【发布时间】:2021-03-18 03:49:29
【问题描述】:

我有一个 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 文件并将它们放入单个目标文件夹中。

我是 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)

但文件没有反映在目标文件夹中

我该如何解决这个问题?

【问题讨论】:

  • 您可以在“shutil”模块中使用“copy”和“copy2”来了解如何调用它们来进行所需的复制。
  • 在“C:/Users/ivd/Desktop/autotranscribe/”的末尾添加/

标签: python pandas directory glob shutil


【解决方案1】:

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

所以您仍然需要使用另一个函数实际移动文件。

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

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

【讨论】:

  • 我有一个菜鸟问题,这将如何通过我拥有的特定文件名拾取文件?我不希望它从源目录 \019\Recordings 中获取所有 wav 文件。我只希望它提取我上面列出的特定文件,然后将这些文件传输到目标文件夹
  • 查看此站点以了解如何使用 glob geeksforgeeks.org/…。因此,您需要更改参数中使用的模式
【解决方案2】:
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)

【讨论】:

  • 问题 - 我会在哪里提到 \019\Recordings 的源文件夹?以及它如何知道我正在根据我提到的名称而不是所有 * wavs 查找特定的 wav 文件。
  • 用路径示例编辑了我的答案,不确定我是否理解你的文件结构。
  • 好的,让我用一个例子来解释一下——假设你有录音(wavs)的文件名,并想从路径中提取它们。此路径有多个子文件夹。所以你不能真正手动查看每个子文件夹来提取每个 wav。所以现在为了自动化这个脚本,我只想从源文件夹中提取这些特定的文件名,这将获取这些特定的 wav 并将它们放在目标文件夹中。在您的脚本中,我在哪里可以提及我要提取的 .wavs 的具体名称?
  • 你的意思是 target_list_of_wav_names = [wav1.wav,wav2.wav,....etc]
  • 我测试了脚本。但是它运行了,来自目标文件夹 /019/Recordings 的 wav 文件没有传输到 /mydir/ 的目标文件夹
猜你喜欢
  • 1970-01-01
  • 2019-01-18
  • 2019-01-07
  • 2022-11-04
  • 1970-01-01
  • 2013-10-24
  • 2017-02-06
  • 2014-04-23
  • 1970-01-01
相关资源
最近更新 更多