【发布时间】:2010-10-09 02:56:51
【问题描述】:
我一直试图弄清楚如何使用 python 检索(快速)给定 HFS+ 驱动器上的文件数。
我一直在玩 os.statvfs 之类的东西,但什么都得不到(这对我来说似乎很有帮助)。
有什么想法吗?
编辑:让我更具体一点。 =]
出于各种原因,我正在围绕 rsync 编写类似时间机器的包装器,并且希望能够非常快速地估计(不一定是完美的)rsync 将要扫描的驱动器上的文件数量。这样,我可以在 rsync 构建初始文件列表时查看进度(如果您将其称为 rsync -ax --progress,或使用 -P 选项),并向用户报告百分比和/或 ETA。
这与实际备份完全分开,跟踪进度没有问题。但是对于我正在处理数百万个文件的驱动器,这意味着用户正在观察文件数量的计数器在几分钟内没有上限。
到目前为止,我已经尝试完全按照其中一个答案中描述的方法使用 os.statvfs,但结果对我来说没有意义。
>>> import os
>>> os.statvfs('/').f_files - os.statvfs('/').f_ffree
64171205L
更便携的方式在这台机器上给了我大约 110 万,这与我在这台机器上看到的所有其他指标相同,包括 rsync 运行它的准备工作:
>>> sum(len(filenames) for path, dirnames, filenames in os.walk("/"))
1084224
请注意,第一种方法是即时的,而第二种方法让我在 15 分钟后回来更新,因为它只需要很长时间才能运行。
有谁知道获取此数字的类似方法,或者我如何处理/解释 os.statvfs 数字有什么问题?
【问题讨论】:
-
os.statvfs[os.B_FILES] 的输出与您的预期有何不同? (如果您可以粘贴来自 os.statvfs 的示例输出并解释为什么它没有帮助,那将帮助不了解 OS X 的人帮助您)。
-
@Charles:我已经用一些实际细节更新了我的问题......
-
您可以使用之前 rsync 运行中的数字。它快速、便携,对于 10**6 个文件和任何合理的备份策略,它都能为您提供 1% 或更高的精度。
-
@J.F.:完全正确!您应该将其作为实际答案发布,以便我给它 +1。
标签: python macos filesystems hard-drive