我一直在试着用Python快速检索给定HFS+驱动器上文件的数量,但一直没有找到合适的方法。
我已经尝试过使用os.statvfs等方法,但似乎没有取得任何对我有帮助的结果。
您有什么建议吗?
编辑:让我再具体些。
我正在为rsync编写类似Time Machine的包装器,出于各种原因,我需要非常快速地估算(无需完美)rsync将要扫描的驱动器上的文件数。这样,我就可以从rsync中观察进度(如果您像这样调用它: rsync -ax --progress
,或者使用-P
选项),当它构建初始文件列表时,向用户报告百分比和/或预计剩余时间(ETA)。
这与实际备份完全分开,跟踪进度也没有问题。但是对于我处理几百万文件的驱动器,这意味着用户会观察到几分钟内文件数量的计数器不断增加却没有上限。
我已经尝试使用os.statvfs,正如迄今为止一个答案中描述的方法一样,但结果对我来说毫无意义。
>>> import os
>>> os.statvfs('/').f_files - os.statvfs('/').f_ffree
64171205L
更加便携的方法在这台机器上可以给我约1.1百万,这与我在这台机器上看到的所有其他指标相同,包括rsync运行其准备工作:
>>> sum(len(filenames) for path, dirnames, filenames in os.walk("/"))
1084224
请注意,第一种方法是瞬时的,而第二种方法让我在15分钟后回来更新,因为它需要那么长时间才能运行。
有人知道获取这个数字的类似方法吗?或者我处理/解释os.statvfs数字的方法有什么问题吗?