dynamically append processed filename to output txt file
samples文件夹有一堆样本
将最终输出
我接近使用创建一个新文件,文件名包含循环变量,python,我做了以下,但得到小错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | from __future__ import division import librosa import os import numpy as np test_src = 'samples/' path_to_audios = [os.path.join(test_src, f) for f in os.listdir(test_src)] for audio_path in path_to_audios: # blah .. # blah # blah . . # blah . . features_with_times= some_val # np.savetxt('koo'+ str(k) + '.txt') print"saving mfcc features" np.savetxt('mfcc_flwts'+str(audio_path)+'.txt', features_with_times,newline =' ', delimiter= '\t') |
错误:IOError:[Errno 2]没有这样的文件或目录:'mfcc_flwtssamples / abc.mp3.txt'
如何解决这个问题? 如何_prevent
我知道我可以拥有
这将保存示例/文件夹中存在的文件的名称。 到列表。
如何将这些传递到
新手问题。
更新:
我想出的原始解决方案是减去两个字符串:
1 2 3 4 5 | a = 'samples/' b = audio_path val = b.replace(a,'') np.savetxt('mfcc_flwts_'+str(val)+'.txt', features_with_times,newline =' ', delimiter= '\t') |
有没有更好的方法来实现我的解决方案。
更新:2:
我也可以将它保存到我选择的文件夹中,如下所示:
1 2 3 | save_destination = 'outputss/' np.savetxt(os.path.join(save_destination,'mfcc_flwts_'+str(val)+'.txt'), features_with_times,newline =' ', delimiter= '\t') |
您的问题是
1 2 3 4 5 6 7 8 9 10 11 12 13 | test_src = 'samples/' filenames = os.listdir(test_src) path_to_audios = [os.path.join(test_src, f) for f in filenames] for fn, audio_path in zip(filenames, path_to_audios): # now you've got path and filename in parallel. If you need to discard the file ending since it's not".txt", # split at the dot and take the first part only fn = fn.split('.')[0] print"saving mfcc features" np.savetxt('mfcc_flwts'+str(fn)+'.txt', features_with_times,newline =' ', delimiter= '\t') |
最后一行将结果保存在工作目录中,这也是编写文件名的一种丑陋方式。 所以我们想把它改成......
1 2 3 4 5 6 7 | np.savetxt( os.path.join(your_target_path, 'mfcc_flwts{0}.txt'.format(fn)), features_with_times, newline =' ', delimiter= '\t' ) |