Я пытался выяснить, как (быстро) получить количество файлов на данном диске HFS + с помощью python.
Я играл с os.statvfs и тому подобным, но не могу ничего получить (что мне кажется полезным).
Есть идеи?
Редактировать: Позвольте мне быть более конкретным. =]
Я пишу оболочку, похожую на машину времени, по rsync по разным причинам, и хотел бы, чтобы очень быстрая (не обязательно идеальная) оценка числа файлов на диске, который 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?