我正在尝试编写一个小程序来查找特定文件夹(以及后续子文件夹)中的所有音频文件,然后检查该音频文件是否已有与之关联的 .vtt 或 .srt 文件,如果没有,则应该创建所述音频文件的列表。然后将该列表传递给程序以创建转录。到目前为止,这是我的代码:
import pathlib
import posixpath
# Search for all audio files, recursively
extentions = [".ogg", ".wav", ".mp3"]
folder_path = "/tmp/audiofiles/"
files = [f for f in pathlib.Path(folder_path).rglob('*') if f.suffix in extentions]
for x in files:
abs_name = posixpath.abspath(x)
print(abs_name)
filename_without_ext = abs_name.with_suffix('')
print(filename_without_ext)
abs_name
返回为 /tmp/audiofiles/2/2.ogg
。所以我试图测试 /tmp/audiofiles/2/2.vtt
或 /tmp/audiofiles/2/2.srt
是否存在,如果不存在,请将 /tmp/audiofiles/2/2.ogg
添加到列表中。
我查看了这个链接,特别是JS的答案,但我收到以下错误:
Traceback (most recent call last):
File "./get_file_list.py", line 15, in <module>
filename_without_ext = abs_name.with_suffix('')
AttributeError: 'str' object has no attribute 'with_suffix'
我在这里缺少什么?
对于像我这样的初学者,将来可能需要这样的东西,这就是我解决这部分问题的方法。
import pathlib
import os
def generate_file_list():
# Search for all audio files, recursively
extentions = [".ogg", ".wav", ".mp3"]
folder_path = "/tmp/audiofiles/"
files = [f for f in pathlib.Path(folder_path).rglob('*') if f.suffix in extentions]
to_be_transcribed = []
for x in files:
filename_vtt = x.with_suffix('.vtt')
filename_srt = x.with_suffix('.srt')
x = str(x)
if os.path.isfile(filename_vtt) or os.path.isfile(filename_srt):
print('File: ' + x + ' has a transcription already')
else:
to_be_transcribed.append(x)
return to_be_transcribed
if __name__ == "__main__":
file_list = generate_file_list()
print(file_list)