2013-03-06 26 views
1

嗨我试图从信号创建多个样本。要做到这一点,当fft被绘制时,我也将频率和幅度输出到csv文件。这个问题虽然是我只做一个样本,因为输出文件每次都被覆盖。我想要做的就是检查文件'output.csv'是否已经存在,如果是这样的话,为'output1.csv''output2.csv'等行添加每个新文件的递增数字。任何帮助将不胜感激如何检查文件是否存在,如果是的话附加一个数字到文件名

def draw_fft(self): 
     self.plot_fft[0].set_data([self.freq, self.iq_fft]) 
     self.sp_fft.set_xlim(self.freq.min(), self.freq.max()) 
     self.sp_fft.set_ylim([self.iq_fft.min()-10, self.iq_fft.max()+10]) 
     # for debugging print(self.freq,self.iq_fft) 
     freqOut = np.array(self.freq) 
     amplOut = np.array(self.iq_fft) 
     output = np.column_stack((freqOut.flatten(),amplOut.flatten()) 
     # where the file check should occur 
     np.savetxt('output.csv',output,delimiter=',') 

回答

7

当然,你可以做到这一点。如何在文件名中附加更多信息,例如此刻的日期和时间。

这样你就不必检查文件的存在。

import datetime as dt 

def draw_fft(self): 
    ... 
    outputfilename = 'output_{}.csv'.format(dt.datetime.now().strftime('%Y%m%d%H%M%S')) 
    np.savetxt(outputfilename, output, delimiter=',') 
+0

感谢这个(尽管有点混乱),它的工作真的很好(我只需要给我的项目合作伙伴留下深刻的印象,因为最终有用的数据可以让她通过哈哈来解析)顺便说一下,我能指出你作为什么? – Jahat120 2013-03-06 19:18:51

+0

非常欢迎。随意使用你想要的代码。你不需要站点,但是如果你愿意的话,你可以在这个答案中包含一个(缩写)链接:http://stackoverflow.com/a/15255919/42346也许作为你的源代码的注释。 – bernie 2013-03-06 19:21:18

+0

真棒谢谢你。 – Jahat120 2013-03-06 19:24:59

1

要检查文件是否存在,使用os.path.isfile功能:

http://docs.python.org/2/library/os.path.html#os.path.isfile

+0

有没有简单的方法来追加'output'+ num +'.csv'? – Jahat120 2013-03-06 19:07:17

+0

你可以使用字符串格式:''output%d.csv“%num'(其中num应该是一个数字)...或者像这样:'name =”output“+ str(num)+”.csv “' – pawroman 2013-03-06 19:07:45

3
from os.path import isfile 

sequence = "" 
filename = "output%s.csv" 

while isfile(filename % sequence): 
    sequence = int(sequence or 0) + 1 
filename = filename % sequence 

注意,如果另一个进程或线程试图创建一个使用相同的基本名称和方法,在同一个目录中的文件,这可能是受到了竞争条件。

相关问题