如何处理文件夹中的所有.wav文件并将结果附加到python列表

时间:2016-10-11 16:35:26

标签: list python-3.x wav

我在文件夹中有50个.wav文件,我需要遍历数据集并加载所有50个文件。对于每个音频文件,我只需将音频数据(不是sample_rate,只是数据)附加到名为'零'的Python列表中。

你可以帮帮我吗? 谢谢。

2 个答案:

答案 0 :(得分:1)

如果你真的只想要音频数据。

import wave, os, glob
zero = []
path = '/path/to/directory'
for filename in glob.glob(os.path.join(path, '*.wav')):
    w = wave.open(filename, 'r')
    d = w.readframes(w.getnframes())
    zero.append(d)
    w.close()

答案 1 :(得分:0)

解决方案

我意识到这是微软数据科学专业计划的课程作业,还没有找到任何好的答案。所以这就是你给我们的场景:

  • 文件夹中的50个.wav文件
  • 需要遍历每个.wav文件并将其全部加载到
  • 您只想追加从data
  • 返回的音频数据sample_rate而不追加scipy.io.wavfile

您已经有一个名为zero的空列表我假设:

zero = []

这是解决方案(更改path以匹配您的目录):

import os
import glob
path = "Datasets/recordings/"
files = os.listdir(path)

for filename in glob.glob(os.path.join(path, '*.wav')):
    samplerate, data = wavfile.read(filename)
    zero.append(data)

不希望做的是简单地遍历该目录中的所有文件。大多数操作系统创建文件(git是一个例子,Mac OS上的.DS_Store是另一个例子),所以你只想读取只有*.wav扩展名的文件。

然后使用简单的.append()附加它们。

完整性检查

len(zero)应返回50,因为您在该指定目录中有50个.wav个文件。

祝你好运!