增加文件名以避免覆盖现有文件

时间:2020-02-24 20:53:42

标签: python increment

我正在尝试自学Python,我有一个简单的程序来记录一些音频并将其发送到输出文件。为了避免覆盖前一个文件(output1.wav,output2.wav等),我似乎无法确切地知道每次运行该文件时如何递增文件。看起来很简单,但是正如我说的那样,我对Python还是很陌生,似乎无法使其正常工作。

import os
import sounddevice as sd
from scipy.io.wavfile import write


os.chdir(r'C:\Path') 
fs = 44100 
seconds = 20 
myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=2)
sd.wait() 

write('output.wav', fs, myrecording)  

2 个答案:

答案 0 :(得分:0)

首先,您必须找出写入的最后一个文件,然后将其递增一个并生成新的文件名:

import glob 
import re

files=glob.glob("Output*.wav")
print(files)
numbers = [int(re.search("Output(\d+).wav", s).group(1)) for s in files]
next_num = max(numbers)+1
print(numbers)
new_filename = f"Output{next_num}.wav"
print(new_filename)

我使用了re库中的正则表达式搜索来提取文件号。

答案 1 :(得分:0)

多次递增和写入下一个可用数字最终会导致O(n ^ 2)操作,这对于大型集合可能会非常慢。

如果您改用UUID怎么办?很简单,它是O(n)并且极不可能引起碰撞: https://docs.python.org/3/library/uuid.html#example