Python Pathlib:“with_suffix” - 对象没有属性

问题描述 投票:0回答:1

我正在尝试编写一个小程序来查找特定文件夹(以及后续子文件夹)中的所有音频文件,然后检查该音频文件是否已有与之关联的 .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'

我在这里缺少什么?

python-3.x pathlib
1个回答
0
投票

对于像我这样的初学者,将来可能需要这样的东西,这就是我解决这部分问题的方法。

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)
© www.soinside.com 2019 - 2024. All rights reserved.