代码之家  ›  专栏  ›  技术社区  ›  stere0123

用于删除名称相同但扩展名不同的重复文件的脚本[已关闭]

  •  -1
  • stere0123  · 技术社区  · 9 年前

    我正在使用Audacity的Chains脚本函数来批量转换和编辑许多大的、未压缩的.WAV文件,一次转换成更小的.OGG格式。我最终得到如下文件夹结构:

    f:/sound-recordings:
    -- rec1.wav
    -- rec2.wav
    -- rec3.wav
    -- rec4.wav
    -- rec5.wav
    f:/sound-recordings/cleaned:
    -- rec1.ogg
    -- rec2.ogg
    -- rec3.ogg
    

    一些源.WAV文件已损坏(请注意上面示例中的rec4.WAV和rec5.WAV),Audacity将不会转换它们(至少通过chains函数)。这就产生了一个问题,因为比较两个文件夹,只删除成功转换为.OGG的.WAV文件会变得非常乏味。

    在上面的例子中,“rec1.wav”、“rec2.wav”和“rec3.wav”应该被删除,而“rec4.wav”与“rec5.wav”没有被修改,因为它们没有被转换。

    我需要一个脚本(最好是批处理或python)来从主文件夹中删除任何.WAV文件,这些文件的名称与“清理”文件夹中的.OGG文件相同,而其他.WAV的文件保持不变。

    2 回复  |  直到 9 年前
        1
  •  3
  •   Henrik    9 年前
    @echo off
    
    for %%I in (f:\sound-recordings\*.wav) do (
        if exist f:\sound-recordings\cleaned\%%~nI.ogg del %%I
    )
    
        2
  •  0
  •   AChampion    9 年前

    您可以使用 split 去除扩展,然后遍历脏目录,检查它是否 in 清洁的

    基本python伪代码如下:

    clean = [filename.split('.')[0] for filename in clean_directory]
    delete = [filename for filename in dirty_directory if filename.split('.')[0] in clean]
    for filename in delete:
        os.remove(filename)