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

问题描述 投票:0回答:2

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

你可以帮帮我吗?谢谢。

list python-3.x wav
2个回答
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()

0
投票

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

  • 文件夹中有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文件。

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.