[英]Python os and gob: Different results when executing a script on a single file vs. multiple files
我正在編寫一個Python Shell腳本,該腳本可以在單個.wav文件或指定目錄中的所有.wav文件上執行函數(將一組方法從2D numpy數組寫入數據文件)。
例如,
> myscript.py --file=audio.wav --data="data.tab"
應該將一個浮點值寫入data.tab。
> myscript.py --path="path/with/audio_files" --data="data.tab"
應該將一組浮點值寫入data.tab。
我有一個包含一堆WAV文件的文件夾。 當我在單個文件(使用--file選項)上執行路徑時,結果與使用--path選項處理文件時的結果不同。
我已經通過3種方式實現了路徑文件:
1)使用os.listdir()
for audioFile in os.listdir(options.path):
if audioFile.endswith('.wav'):
foo(audioFile)
2)使用os.walk()
for r, d, f in os.walk(options.path):
for audioFile in f:
if audioFile.endswith('.wav'):
foo(audioFile)
3)使用glob.glob()
for audioFile in glob.glob("*.wav"):
foo(audioFile)
方法1和2返回相同的結果。 方法3返回一個不同的結果。 這三種方法返回的結果都不同於處理單個文件的結果。
使用os或gob模塊時會有什么不同?
編輯:這是我在目錄中處理所有.wav文件的地方:
for r, d, f in os.walk(options.path):
for audioFile in f:
if audioFile.endswith('.wav'):
# Add MFCC 1-12 to data.
mfcc12(audioFile, sampleRate, data)
這在mfcc12()中:
# mfccs is a 2D numpy array.
# Each column corresponds to one feature of the audiofile
for i in range(mfccs[0].size):
mfccMean = mfccs[:, i].mean()
mfccStdDev = mfccs[:, i].std()
data.write(str(mfccMean) + '\t' + str(mfccStdDev) + '\t')
我正在使用YAAFE從音頻文件中提取功能。
glob
函數執行Unix樣式的操作,忽略名稱以開頭的文件.
:
>>> os.listdir('.')
['conn.c', 'Makefile', 'conn.o', '.depend', 'conn.c.orig', 'conn']
>>> glob.glob('*')
['conn.c', 'Makefile', 'conn.o', 'conn.c.orig', 'conn']
(注意, fnmatch.fnmatch
不這樣做;跳過點文件的代碼是在glob.glob1
)。 大概您有一些點文件。
我想我解決了問題。 問題不是我的mfcc提取設置,不是Python代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.