2014-11-02 80 views
0

我刚刚开始编程,我正在学习Python。我想制作一小段软件,用音频文件查看目录,并将它们合并到一个音频文件中。 这里是我当前的代码:合并多个音频文件

import glob 
#import os 
import wave 

fil = raw_input("Qual o diretorio ?") 
#files = os.listdir(fil) 
files = glob.glob(fil) 

infiles = files 
outfile = "merged.wav" 

data= [] 
for infile in range(len(infiles)): 
    w = wave.open(infile, 'rb') 
    data.append([w.getparams(), w.readframes(w.getnframes())]) 
    w.close() 

output = wave.open(outfile, 'wb') 
output.setparams(data[0][0]) 
output.writeframes(data[0][1]) 
output.writeframes(data[1][1]) 
output.close() 

我根据这个帖子merging two wav files的代码。我的想法是使用glob填充数组,并迭代获取所有文件,但我得到一个属性错误。 我能做什么?

+0

你应该总是发布整个错误与所有可以帮助我们的行。 – User 2014-11-02 03:36:08

+0

嗨,谢谢你的建议。这是我得到的:Traceback(最近一次调用最后): 文件“merger.py”,第17行,在 w = wave.open(infile,'rb') 文件“C:\ Python27 \ lib \ wave.py”,行509,打开 return Wave_read f) 文件“C:\ Python27 \ lib \ wave.py”,行129,在initfp中为 self._file =块(文件,bigendian = 0) 文件“C:\ Python27 \ lib \ chunk.py”,第61行,在__init__中 self.chunkname = file.read(4) – 2014-11-03 13:09:41

+0

错误丢失。如果这是你的问题,这将是一件好事,因为我们专门为此而设计,并且格式化使它更容易。类似于“AttributeError:xxx没有属性yyy” – User 2014-11-03 16:15:12

回答

1

看起来错的第一件事情是这样的:

for infile in range(len(infiles)): 

你想使用它代替:

for infile in infiles: 

我建议使用一个调试器,像pudb(对于Linux/Mac)或winpdb (Windows。

+0

好的,非常感谢您的建议! – 2014-11-03 13:12:19