如何使用 python 3 查找损坏的 mp3 文件?

How to find broken mp3 files with python 3?

我有我的个人 mp3 collection,在我的硬盘损坏后部分损坏了。 我需要在文件夹和 sub-folders.

中找到很多(大约 >5k 文件)损坏的 mp3 的名称

你能给我一个关于 python 3 个可以打开 mp3 文件的库的提示,阅读它并找到其中的比特率问题。

对于各个步骤,我可以给你以下提示。

文件名

要获取 mp3 文件名,glob 模块是您的朋友:glob.iglob('*.mp3', recursive=True)

处理 mp3

要处理 mp3 文件,您几乎可以使用满足您需要的任何命令行实用程序。几个例子:

您可以通过 subprocess 模块从 python 中 运行 这些工具。例如:

subprocess.check_output(['avprobe', 'path/to/file'])

然后您可以根据需要解析输出;不过如何检测文件是否损坏还有待探讨。

深入了解 mp3

如果你喜欢冒险,那么你也可以直接扫描 mp3 文件。 Wikipedia 给出了有关文件结构的提示。因此,为了获得比特率,应该执行以下操作:

with open('path/to/file', 'rb') as fp:
    fp.read(2)  # Skip the first two bytes.
    bit_rate = fp.read(1) & 0xf0

就我的目的而言,评论非常适合 mutagen here is solution。 一切都很简单。