处理文件夹中的所有.wav文件,并将结果附加到Python 2.7中的单个CSV文件中

时间:2015-05-28 15:59:00

标签: python csv audio export-to-csv

在任何给定时间,我在文件夹中都有40多个.wav文件。我需要通过功率谱密度(PSD)分析比较每个.wav文件,并将结果吐出成一个大的CSV。理想情况下,每个.wav文件都有一个包含其结果的列...我在stackoveflow上尝试了许多不同的方法,但似乎无法获取每个.wav文件的数据以追加到新列。相反,它似乎会覆盖同一列中的先前结果。

理想情况下,我希望.csv布局类似于以下内容: csv layout

每个.wav文件都有一个列并且有一个标题

以下是我的简化代码,其中附加到CSV部分完全无效。

import numpy as np
from scipy.io.wavfile import read
import csv
import glob
import os
import ntpath

csv_name = 'helloclay.csv'
path = r'C:\Users\Desktop\Spectral Work\Blacksmith'
csv_out = open(csv_name, 'wb')                   #Open CSV before loop so that all results will append to the same file
mywriter = csv.writer(csv_out)                   # create the csv writer object.      

    #start loop to process .wav files and write/append to csv
for audioFile in glob.glob(os.path.join(path, '*.wav')):
    #Extract Filename for Column Header    
    (fs, x) = read(audioFile)                     # sample rate & data
    basefilename = ntpath.basename(audioFile)     # pull filename from filepath    
    cutwav = len(basefilename)
    sig_name = basefilename[0:cutwav-4]           #remove .wav from basefilename to be used for csv_name
    cln_name = [sig_name]                         #change sig_name to array so csv will apply appropriate header

    #analysis portion
    (num_psd, freqspsd) = psd(x, NFFT=511, Fs=fs, pad_to = 1024)#PSD analysis
    psd2=20*np.log(num_psd)                       #Scale PSD to dB

    #write PSD to csv
    rows = zip(cln_name)                          #Write header to column
    mywriter.writerows(rows)   
    rows = zip(psd2)                              #Write PSD results under header
    mywriter.writerows(rows)

csv_out.close()

我已经浏览了stackoverflow,但所有附加到CSV文档的内容都与读取现有的csv有关,而不是从新处理的数据中创建一个新的。

非常感谢任何提示/帮助!

0 个答案:

没有答案