如何使用 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
我有我的个人 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