如何检查文件是否存在,如果存在则在文件名后添加数字

2 投票
3 回答
4551 浏览
提问于 2025-04-17 18:10

你好,我正在尝试从一个信号中创建多个样本。为此,当我绘制快速傅里叶变换(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=',')

3 个回答

1

要检查一个文件是否存在,可以使用 os.path.isfile 这个函数:

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

6
from os.path import isfile

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

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

请注意,如果另一个程序或线程也在尝试使用相同的基础名称和方法在同一个目录下创建文件,这可能会导致竞争条件。

8

当然可以这样做。不过不如在文件名中加一些更有用的信息,比如当前的日期和时间。

这样你就不需要去检查文件是否存在了。

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

撰写回答