Python を使用して、特定の HFS+ ドライブ上のファイル数を (すばやく) 取得する方法を見つけようとしています。
私は os.statvfs などで遊んでいますが、何も得られません (それは私にとって役に立ちます)。
何か案は?
編集:もう少し具体的にさせてください。=]
さまざまな理由で rsync のタイムマシンのようなラッパーを作成していますが、rsync がスキャンしようとしているドライブ上のファイル数の非常に高速な見積もり (完全である必要はありません) が必要です。このようにして、初期ファイルリストを構築するときに rsync からの進行状況を監視し ( のように呼び出した場合rsync -ax --progress
、または-P
オプションを使用した場合)、パーセンテージや ETA をユーザーに報告できます。
これは実際のバックアップとは完全に分離されているため、進行状況を追跡するのに問題はありません。しかし、私が数百万のファイルで作業しているドライブでは、ユーザーはファイル数のカウンターが数分間上限なしで上昇するのを見ていることを意味します。
これまでの回答の1つで説明されている方法とまったく同じ方法で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
最初の方法はすぐに実行できることに注意してください。2 番目の方法では、実行に 15 分ほどかかったので、更新するために 15 分後に戻ってきました。
この番号を取得する同様の方法を知っている人はいますか、または os.statvfs 番号の処理/解釈方法の何が問題になっていますか?