1

我有两个文件夹,一个叫做“修改”,一个叫做“原始”。

  • 'modified' 没有子目录,包含 4000 个 wav 文件,每个文件都有唯一的名称。
  • 4000 个文件是“原始”文件的副本,但该文件夹有许多子目录,原始 wav 文件位于其中。

我想,对于“修改”中的所有 wav 文件,无论它们在哪里,都在“原始”中替换它们的名称对应文件。

例如,如果一个文件在修改后被称为“sound1.wav”,那么我想在“original”的某个子目录中找到“sound1.wav”,并将那里的原始文件替换为修改后的版本。

我运行 Windows 8,因此最好使用命令提示符或 cygwin。

4

1 回答 1

1

根据要求,我编写了执行上述操作的 python 代码。我使用“os”和“shutil”模块首先浏览目录,然后覆盖文件。

'C:/../modified' 是指包含我们已修改并希望用于覆盖原始文件的文件的目录。

“C:/../originals”是指包含许多子目录的目录,这些子目录的文件名与“modified”中的相同。

该代码通过列出修改后的目录中的每个文件来工作,并且对于每个文件,我们声明文件的路径。然后,我们查看原始目录的所有子目录,在修改后的文件和原始文件同名的地方,我们使用shutil.copyfile() 将原始文件替换为修改后的文件。

因为我们使用的是 Windows,所以有必要将斜杠的方向更改为“/”。

这是对修改目录中的每个文件执行的。

如果有人遇到同样的问题,我希望这能派上用场!

import os
import shutil



for wav in os.listdir('C:/../modified'):
    modified_file = 'C:/../modified/' + wav



    for root, dirs, files in os.walk('C:/../original'):
        for name in files:
            if name == wav:
                original_file = root + '/' + name
                original_file = replace_file.replace('\\','/')

                shutil.copyfile(modified_file, original_file)
                print wav + ' overwritten'




print 'Complete'
于 2013-04-18T12:07:44.597 回答