3

我正在构建一个音乐文件管理器(在 python2 中),我在其中读取所有文件的元数据,然后将这些文件放在所需的文件夹中。

现在,我已经准备好使用命令行界面了,但是这个脚本以一种显示“它现在正在处理哪个文件?”的方式显示反馈。

如果该目录包含 5000 个 mp3 文件,则应该有某种反馈。

所以,我想知道找到目录中可用的 mp3 总数的最有效方法(也在所有后续目录中递归扫描)。

我的想法是跟踪处理的总文件并据此显示进度条。有没有更好的方法(性能方面),请随时指导。

我希望我的应用程序没有任何类型的平台相关代码。如果坚持这个想法有严重的性能损失,请为 linux 提出建议。

4

2 回答 2

2

我很抱歉这么说,但是没有比递归查找文件更有效的方法了(至少那是平台(或文件系统)独立的)。

如果文件系统可以帮助您,它会帮助您,而您无能为力。

没有递归扫描就不可能做到这一点的原因是文件系统的设计方式。一个目录可以看作是一个文件,它包含了它所包含的所有文件的列表。要在子目录中查找某些内容,您必须先打开目录,然后打开子目录并进行搜索。

于 2011-09-10T13:13:34.157 回答
1

@shadyabhi:如果您有很多子目录,也许您可​​以通过使用 os.listdir 和 multiprocessing.Process 递归到每个文件夹来加速该过程。

于 2011-09-10T14:57:14.157 回答