python 如何更改代码结尾

python how to change ending of code

我正在想办法编辑这个字符串的结尾:

select_file = AudioSegment.from_(select_file)

我想让它做的是针对文件 selected 的格式(在本例中为 .wav 文件),更改要为每个文件提取的 AudioSegment。即:如果我 select 一个“.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]}

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

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

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

之后,您可以通过几个选项来选择正确的 pydub 函数。要理解 API,我建议看一下 documentation,您会看到可以将 from_fileformat 关键字参数一起使用:

AudioSegment.from_file(filename, format=file_extension)

或使用基于您提取的扩展名的功能:

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

你可以通过查看 pydub source 看到 from_mp3 和类似的只是 from_file 的别名与某些格式。

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