【发布时间】:2021-09-12 00:20:11
【问题描述】:
我的 Python 之旅仍处于起步阶段,所以这个问题对于更高级的程序员来说可能是基本问题。
我想分析一堆 .wav 文件,它们都存储在同一个目录中,所以我创建了一个所有文件名的列表,这样我就可以获得它们的音频信号和采样率。
dirPath=r"path_to_directory"
global files
files = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f)) and f.endswith(".wav")]
for file_name in files:
path_to_file= dirPath+"\\"+file_name
audio_signal, sample_rate = sf.read(path_to_file)
sf 是 soundfile 库。
audio_signal 是一个数组,sample_rate 是一个数字。
现在我希望能够同时存储audio_signal 和sample_rate 以及相应的file_name,以便以后访问它们。我该怎么做?
我试过了
files = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f)) and f.endswith(".wav")],[]
for file_name in files[0]:
path_to_file= dirPath+"\\"+file_name
audio_signal, sample_rate = sf.read(path_to_file)
files[1].append(audio_signal)
files[2].append(sample_rate)
这似乎可行,但有更优雅的方式吗?我觉得audio_signal、sample_rate 和file_name 是单独的价值观,而不是相互依存的。
【问题讨论】:
-
我不确定您显示的代码是否真的有效,据我所知
files[2]不存在并且应该给出错误。 -
@mkrieger1 是的,你是对的。它存在于原始代码中,但当我在这里复制时不知何故丢失了。
-
请不要通过
\\添加两个字符串来构造文件名。改用os.path.join()(又名:让自己养成编写跨平台代码的习惯) -
@umläute 感谢您的提示!