【问题标题】:Increment number in filename for avoid overwriting wav file in a loop在文件名中增加数字以避免在循环中覆盖 wav 文件
【发布时间】:2021-01-15 16:17:06
【问题描述】:

我是 python 的新手,我试图在一个目录中循环,目的是将文件夹中包含的每个 wav 文件分成许多块。 我已经成功循环并分割了文件,但是当我尝试将块导出到新文件夹中时,我无法弄清楚如何更改创建的块名称以便成功保存所有文件(不覆盖)。

import os
from pydub import AudioSegment

path = ""

os.chdir(path)

audio_files = os.listdir()

for file in audio_files:

    name, ext = os.path.splitext(file)
    if ext == ".wav":
        w = AudioSegment.from_wav(file)
        chunk_length_ms = 3000 
        chunks = make_chunks(w, chunk_length_ms) 
        for i, chunk in enumerate(chunks):
            chunk_name = "{0}.wav".format(name)
            print ("exporting", chunk_name)
            chunk.export('dir_path' + chunk_name, format="wav")

使用此代码仅成功保存了 100 个块,而不是 1100 个。 wav 文件具有以下名称结构:“genre.000x.wav”,例如。 'Blues.00001.wav' 应分块为:'Blues.00001a.wav','Blues.00001b.wav',ecc。 我该怎么做?

【问题讨论】:

    标签: python wav pydub


    【解决方案1】:

    下面是为您在循环中导出的每个文件名添加连续小写字母的方法:

    chunks = ['chunk1', 'chunk2', 'chunk3']
    name = 'Blues.00001'
    
    for i, chunk in enumerate(chunks):
        chunk_name = "{0}{1}.wav".format(name, chr(ord('a')+i))
        print ("exporting", chunk_name)
    

    结果:

    exporting Blues.00001a.wav
    exporting Blues.00001b.wav
    exporting Blues.00001c.wav
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      相关资源
      最近更新 更多