1

こんにちは、信号から複数のサンプルを作成しようとしています。これを行うには、fft が描画されるときに、周波数と振幅も csv ファイルに出力します。ただし、これの問題は、出力ファイルが毎回上書きされるため、サンプルを 1 つしか作成していないことです。私がやりたいことは、ファイル「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 に答える