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

时间:2018-08-20 21:01:45

标签: python

首先:我是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文件的持续时间并打印出来有任何想法吗?

2 个答案:

答案 0 :(得分:1)

你可以试试吗?

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", ""))

答案 1 :(得分:0)

即使我想要一个类似的问题。在查看了各个站点后,我得到了答案。请参阅下面的代码。如果您使用的是Windows操作系统,请记住在路径目录前写一个 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/