簡體   English   中英

PyDub:無法將文件正確保存在不同的目錄中

[英]PyDub : Can't Save file in a different directory properly

我一直在使用此代碼將 10.wav 文件轉換為.mp3

song_dir = 'Desktop/Song_test/*wav'
song = glob(song_dir) 
print(song)
for song in song:
    mp3_song = os.path.splitext(song)[0] + '.mp3' 
    sound = pydub.AudioSegment.from_mp3(song)
    sound.export('Desktop/Song_test/Converted/', mp3_song, '.mp3', format="mp3")
print("Conversion Done")

我真正想要實現的是從 Song_Test 中選擇 .wav 文件將其轉換為 .mp3 文件並將其保存在名為 Converter 的 Song_Test 內的子目錄中。 新文件應該具有相同的名稱(為此,當我沒有嘗試將 output 保存在不同的目錄中時,我嘗試使用os.path.splitext ,這工作正常,轉換后的文件與之前的名稱相同文件。

將其保存在新目錄中后,當我運行此代碼錯誤時,會彈出TypeError: export() got multiple values for argument 'format' 請指導我如何做到這一點。

嘗試像這樣編寫導出 -

sound.export('Desktop/Song_test/Converted/' + mp3_song, format="mp3")
  1. 使用“+”將“mp3_song”添加到位置/名稱字符串。
  2. 添加“.mp3”似乎是多余的,因為它包含在“mp3_song”中。

對我來說,問題是 Pydub 沒有為它導出的文件創建目錄。 解決方案是在export()調用之前立即創建目錄。

Path(directory).mkdir(parents=True, exist_ok=True)
filename = f"{directory}\\{index}.{EXPORT_FILE_TYPE}"
file_object = sound.export(filename, format=EXPORT_FILE_TYPE)
file_object.close()
self.tagger.write_tags(filename)

有趣的是,我發現我必須先close()由 PyDub 創建的文件 object,然后才能對文件進行額外處理(在我的例子中是操作文件的元數據標簽)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM