文件名中的递增数字以避免在循环中覆盖 wav 文件
Increment number in filename for avoid overwriting wav file in a loop
我是 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。
我该怎么做?
下面是将连续的小写字母添加到您在循环中导出的每个文件名的方法:
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
我是 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。 我该怎么做?
下面是将连续的小写字母添加到您在循环中导出的每个文件名的方法:
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