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=',')
4

3 回答 3

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=',')
于 2013-03-06T19:10:17.533 回答
5
from os.path import isfile

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

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

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

于 2013-03-06T19:12:02.757 回答
1

要检查文件是否存在,请使用以下os.path.isfile函数:

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

于 2013-03-06T19:06:33.107 回答