如何用for循环从Python字典动态生成音频切片变量?
问题
我通过pydub包将WAV音频文件导入Python,现有一个字典,每个键对应一组音频切割的起始、结束时间戳。我希望通过for循环创建多个变量,变量名对应字典的键,变量值为对应的音频切片(音频文件变量名为audio,切片示例:audio[0:300000])。
示例字典:
pairs = { "part1": [0, 300000], "part2": [300001, 600000], "part3": [600001, 900000], "part4": [900001, 1200000] }
我已编写以下代码,但不清楚如何在循环中动态创建存储实际音频切片的变量:
for key, start_end in pairs.items(): start, end = start_end sliced_audio = audio[start:end]
此前在Stack Overflow看到类似print(f"{key} = {sliced_audio}")的写法,但我不需要字符串形式,而是要存储音频切片的实际变量,求解答。
解决方案
方法1:动态创建全局/局部变量
通过修改全局或局部命名空间,直接将音频切片赋值给对应键的变量名:
from pydub import AudioSegment # 先导入音频文件 audio = AudioSegment.from_wav("你的音频文件.wav") pairs = { "part1": [0, 300000], "part2": [300001, 600000], "part3": [600001, 900000], "part4": [900001, 1200000] } for key, start_end in pairs.items(): start, end = start_end # 用globals()创建全局变量,若需局部变量替换为locals() globals()[key] = audio[start:end] # 后续可直接通过变量名调用,比如part1就是对应的音频切片 print(part1.duration_seconds)
方法2:推荐用字典存储(更安全易维护)
动态创建变量容易引发命名冲突、降低代码可读性,更建议将切片后的音频存入新字典,用原字典的键作为索引:
from pydub import AudioSegment audio = AudioSegment.from_wav("你的音频文件.wav") pairs = { "part1": [0, 300000], "part2": [300001, 600000], "part3": [600001, 900000], "part4": [900001, 1200000] } sliced_audios = {} for key, start_end in pairs.items(): start, end = start_end sliced_audios[key] = audio[start:end] # 调用时通过字典索引访问,比如sliced_audios["part1"] print(sliced_audios["part1"].duration_seconds)
内容的提问来源于stack exchange,提问作者DTYK
相关产品推荐
相关产品推荐

