2013-03-06 1 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

+0

Добро пожаловать. Не стесняйтесь использовать код по своему усмотрению. Вам не нужно размещать сайт, но если вы так хотите, вы можете включить (сокращенную) ссылку на этот ответ: http://stackoverflow.com/a/15255919/42346, возможно, как комментарий в исходном коде. – bernie

+0

Удивительное спасибо. – Jahat120

1

Чтобы проверить, существует ли файл, используйте функцию os.path.isfile:

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

+0

есть простой способ добавить как 'output' + num + '.csv'? – Jahat120

+0

Вы можете использовать форматирование строк: '' output% d.csv '% num' (где num должно быть числом) ... Или это выглядит так: 'name =" output "+ str (num) +" .csv «' – pawroman

3
from os.path import isfile 

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

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

Обратите внимание, что это может быть предметом состояния гонки, если другой процесс или поток пытается создать файл в том же каталоге, используя то же имя и метод.

Смежные вопросы