Ich habe versucht, herauszufinden, wie (schnell) die Anzahl der Dateien auf einem bestimmten HFS + Laufwerk mit Python abrufen.Wie bestimmt man die Anzahl der Dateien auf einem Laufwerk mit Python?
Ich habe mit os.statvfs und so gespielt, aber kann nicht alles bekommen (das scheint mir hilfreich).
Irgendwelche Ideen?
Edit: Lassen Sie mich etwas genauer sein. =]
Ich schreibe einen timemachine-artigen Wrapper um rsync aus verschiedenen Gründen, und möchte eine sehr schnelle Schätzung (muss nicht perfekt sein) der Anzahl der Dateien auf dem Laufwerk rsync wird scannen. Auf diese Weise kann ich den Fortschritt von rsync (wenn Sie es wie rsync -ax --progress
oder mit der -P
Option aufrufen) beobachten, wie es seine anfängliche Dateiliste erstellt und einen Prozentsatz und/oder ETA zurück an den Benutzer meldet.
Dies ist vollständig getrennt von der eigentlichen Sicherung, was kein Problem bei der Verfolgung des Fortschritts ist. Aber mit den Laufwerken, an denen ich mit mehreren Millionen Dateien arbeite, bedeutet das, dass der Benutzer einen Zähler der Anzahl der Dateien sieht, die für einige Minuten ohne obere Grenze gehen.
Ich habe versucht, mit os.statvfs mit genau der Methode zu spielen, die in einer der Antworten bis jetzt beschrieben ist, aber die Ergebnisse ergeben für mich keinen Sinn.
>>> import os
>>> os.statvfs('/').f_files - os.statvfs('/').f_ffree
64171205L
Je mehr tragbare Art und Weise gibt mir um 1,1 Millionen auf dieser Maschine, die die gleiche wie jede andere Anzeige, die ich auf dieser Maschine seine Vorbereitungen laufen, einschließlich rsync gesehen haben:
>>> sum(len(filenames) for path, dirnames, filenames in os.walk("/"))
1084224
Beachten Sie, dass die erste Methode ist augenblicklich, während die zweite mich 15 Minuten später zum Aktualisieren zurück brachte, weil es nur so lange dauerte, um zu laufen.
Kennt jemand einen ähnlichen Weg, um diese Nummer zu bekommen, oder was ist falsch mit, wie ich die os.statvfs Zahlen behandle/interpretiere?
Wie variiert die Ausgabe von os.statvfs [os.B_FILES] von dem, was Sie erwarten? (Wenn Sie eine Beispielausgabe von os.statvfs einfügen und erklären könnten, warum * es nicht hilfreich ist, würde das Leuten helfen, die OS X nicht kennen, Ihnen zu helfen). –
@Charles: Ich habe meine Frage jetzt mit einigen aktuellen Details aktualisiert ... –
Sie könnten eine Nummer aus einem vorherigen rsync-Lauf verwenden. Es ist schnell, portabel und für 10 ** 6 Dateien und jede vernünftige Backup-Strategie wird es Ihnen 1% oder mehr Präzision geben. – jfs