获取目录内所有 mp3 文件的持续时间。

Getting duration of all mp3 files inside catalog.

首先:我完全是 Python 的初学者。

我只需要自动将 mp3 文件添加到我的商店。所有这些都在一个目录中。文件名将是产品名称,文件持续时间将是该产品的描述。

我写了一个简单的 Python 脚本,它从目录中读取所有 mp3 文件名并将它们打印出来。 它看起来像这样:

import os
filenames = next(os.walk("./", topdown=True))[2]
i = 0
while i < len(filenames):
    print(filenames[i].replace(".mp3", ""))
    i += 1

效果很好,但现在我需要从同一目录中读取所有 *.mp3 文件的持续时间。

我找到了名为 Mutagen 的库。 我可以使用这个库轻松获取一个文件的持续时间,但我无法从整个目录中读取文件的持续时间。

读取单个mp3文件长度的代码:

from mutagen.mp3 import MP3
audio = MP3("example.mp3")
print audio.info.length

你知道如何读取一个目录中所有 *.mp3 文件的持续时间并打印出来吗?

你能试试这个吗?

import os
from mutagen.mp3 import MP3
filenames = next(os.walk("./", topdown=True))[2]
for filename in filenames:
    audio = MP3(filename)
    print audio.info.length
    print(filename.replace(".mp3", ""))

连我也想要类似的问题。在查看了各种网站后,我得到了答案。请参阅下面的代码。如果你使用 windows OS 然后记得在你的路径目录前写一个 r

import os
from mutagen.mp3 import MP3
os.chdir(r"C:\Users\*#*")// path of the directory 
print("Directory changed") 
obj = os.scandir() 
def convert(seconds):
    hours = seconds // 3600
    seconds %= 3600
    mins = seconds // 60
    seconds %= 60
    return(hours, mins, seconds)
for entry in obj : 
    if entry.is_dir() or entry.is_file(): 
        audio = MP3(entry)
        hours, mins, seconds = convert(audio.info.length)
        print(str(int(hours)) + ":" + str(int(mins)) + ":" + str(int(seconds)))
        print(entry.name) // for audio file name
obj.close()

我曾使用以下链接作为参考。

https://www.codespeedy.com/find-the-duration-of-an-mp3-file-in-python-mutagen/

https://www.geeksforgeeks.org/python-os-scandir-method/

https://www.geeksforgeeks.org/python-os-chdir-method/