1

我试图弄清楚如何编辑这个字符串的结尾:

select_file = AudioSegment.from_(select_file)

我要做的是针对所选文件的格式(在本例中为 .wav 文件),更改 AudioSegment 以提取每个文件。即:如果我选择“.mp3”文件,AudioSegment.from_wav 将更改为 AudioSegment.from_mp3。

我怎样才能做到这一点?似乎任何使其灵活的尝试都会导致此错误

AttributeError: type object 'AudioSegment' has no attribute 'from_SoundFile'

这是完整的代码。

for file in os.listdir("Music"):
if file.endswith(".wav") or file.endswith(".mp3"):
    print file

select_file = raw_input("Which file would you like to modify?")
if select_file in os.listdir("Music"):
    os.chdir("Music")
    print select_file
    FileEnd = select_file.split(".")
    print FileEnd[-1]
    select_file = AudioSegment.from_SoundFile[-1](select_file)   

SoundFile = { 'Name': select_file, 'format': FileEnd[-1]}

我如何做到这一点,以便结尾会根据文件结尾而改变?我不需要它来适应任何特定类型的代码,所以任何答案都可以。

4

1 回答 1

1

首先,使用os.path.splitext获取文件扩展名是个好主意。

filename, file_extension = os.path.splitext('example_song.mp4')

之后,您有几个选项可以选择正确的 pydub 函数。要了解 API,我建议您查看文档,在那里您可以看到可以from_fileformat关键字参数一起使用:

AudioSegment.from_file(filename, format=file_extension)

或者使用基于您提取的扩展名的函数:

if file_extension == "mp3":
    AudioSegment.from_mp3(output_filename)

您可以通过查看pydub 源代码来看到from_mp3,类似的只是from_file某些格式的别名。

然后要将其导出到文件,您可能需要使用 AudioSegmentexport方法。

于 2015-11-28T01:54:19.803 回答