当文件名name
已经存在时,如何修改此函数以增加"test.wav"
?
def write_float_to_16wav(signal, name = "test.wav", samplerate=20000):
signal[signal > 1.0] = 1.0
signal[signal < -1.0] = -1.0
intsignal = np.int16((2**15-1)*signal)
siow.write(name,samplerate,intsignal)
答案 0 :(得分:1)
您可以使用|}
检查文件是否存在,并在需要时增加:
os.path.exists
以上内容将检查当前目录中的文件,如果您要检查其他目录,则可以使用import os.path
if os.path.exists(name):
name_, ext = os.path.splitext(name)
name = f'{name_}1{ext}'
# For <3.6: '{name_}1{ext}'.format(name_=name_, ext=ext)
连接路径:
os.path.join
答案 1 :(得分:0)
有两个主要选项。第一个(可能更好)的选择是简单地计算已经创建的wav文件的数量。
num_waves_created = 0
def write_float_to_16wav(signal, name = "test.wav", samplerate=20000):
signal[signal > 1.0] = 1.0
signal[signal < -1.0] = -1.0
intsignal = np.int16((2**15-1)*signal)
name = "test" + str(num_waves_created) + ".wav"
siow.write(name,samplerate,intsignal)
num_waves_created += 1
第二个选项是每次在函数中测试文件是否已创建。它包含一个while循环,该循环以线性复杂度运行,因此它对于10个wav文件足够有效,但是如果需要创建更多文件,则可能会严重降低速度。
from os import path
def write_float_to_16wav(signal, name = "test.wav", samplerate=20000):
new_path = False
while (!new_path):
if path.exists(name):
break
else:
name_, ext = os.path.splitext(name)
name = f'{name_}1{ext}'
signal[signal > 1.0] = 1.0
signal[signal < -1.0] = -1.0
intsignal = np.int16((2**15-1)*signal)
siow.write(name,samplerate,intsignal)
答案 2 :(得分:0)