Dateiänderungen ohne Abfrage erkennen [duplicate]

Lesezeit: 3 Minuten

Ich versuche, eine Methode innerhalb eines Python-Programms zu verwenden, um zu erkennen, ob eine Datei im Dateisystem geändert wurde. Ich weiß, dass ich alle 5 Sekunden etwas laufen lassen könnte, um das letzte Änderungsdatum vom System zu überprüfen, aber ich war neugierig, ob es eine einfachere Methode gibt, dies zu tun, ohne dass mein Programm wiederholt überprüfen muss .

Kennt jemand eine solche Methode?

  • Welche Plattform? Windows verfügt über einen Systemdienst, um einen Rückruf zu registrieren, wenn sich ein Verzeichnis oder eine Datei ändert.

    – PaulMcG

    21. April ’11 um 1:17

  • Linux, aber ich würde es vorziehen, das Programm plattformübergreifend kompatibel zu machen.

    – Thomas Ward

    21. April ’11 um 1:19

  • Wenn Sie für Windows programmieren, sollten Sie den .Net File System Watcher in Betracht ziehen. ironpython.info/index.php/Watching_the_FileSystem

    – HK1

    21. April ’11 um 1:23

  • @TobiasKienzler es ist so lala, diese Frage will a anschauen Single Datei.

    – Antti Haapala

    1. April ’16 um 8:30

Dateianderungen ohne Abfrage erkennen duplicate
nemith

Wachhund

Ausgezeichnete plattformübergreifende Bibliothek zum Ansehen von Verzeichnissen.

Von der Website

Unterstützte Plattformen

  • Linux 2.6 (notify)

  • Mac OS X (FSEvents, kqueue)

  • FreeBSD/BSD (kqueue)

  • Windows (ReadDirectoryChangesW mit E/A-Abschlussports; ReadDirectoryChangesW-Worker-Threads)

  • OS-unabhängig (die Festplatte nach Verzeichnis-Snapshots abfragen und diese regelmäßig vergleichen; langsam und nicht empfohlen)

Ich habe es bei ein paar Projekten verwendet und es scheint wunderbar zu funktionieren.

  • Das Befehlszeilentool eignet sich hervorragend für die Verwendung in der Entwicklung. Danke für den Tipp.

    – AgDude

    22. Dezember ’11 um 13:39

  • Aus dem Beispiel auf der Watchdog-Website geht hervor, dass eine Abfrage erforderlich ist.

    – Zauber Paracelsus

    15. September ’13 um 0:35

  • @ZauberParacelsus: Das tut es nicht. Das Beispiel tut time.sleep(1) um das Beispiel am Leben zu erhalten, aber Watchdog ist eigentlich asynchron und ruft event_handler im Falle eines Dateiänderungsereignisses auf.

    – WhyNotHugo

    2. Apr. ’14 um 14:19

  • Es scheint, dass Wachhund funktioniert nur für Verzeichnisse. Gibt es eine Möglichkeit, eine Nicht-Verzeichnis-Datei auf Änderungen zu überprüfen, ohne zu polieren (mithilfe des Kernels inotify)?

    – Brutus

    19. Juni ’14 um 10:50

Dateianderungen ohne Abfrage erkennen duplicate
Aleksi Torhamo

Für Linux gibt es pyinotify.

Von der Startseite:

Pyinotify ist ein Python-Modul zur Überwachung von Dateisystemänderungen. Pyinotify basiert auf einer Linux-Kernel-Funktion (zusammengeführt in Kernel 2.6.13) namens inotify. inotify ist ein ereignisgesteuerter Notifier, dessen Benachrichtigungen durch drei Systemaufrufe vom Kernel-Space in den User-Space exportiert werden. pyinotify bindet diese Systemaufrufe und stellt darüber hinaus eine Implementierung bereit, die eine generische und abstrakte Möglichkeit bietet, diese Funktionalitäten zu manipulieren.

Somit ist es offensichtlich nicht plattformübergreifend und setzt auf eine ausreichend neue Kernel-Version. Soweit ich sehen kann, wäre die Anforderung von Kernel-Unterstützung jedoch für jeden Nicht-Polling-Mechanismus zutreffend.

  • Kann pyinotify verwendet werden, um das spezifische Programm zu erkennen, mit dem eine Datei geändert wurde?

    – Anderson Green

    29. Dezember ’12 um 2:57

  • Sind die Einwände dagegen noch gültig?

    – Brutus

    19. Juni ’14 um 10:30 Uhr

  • dieses Paket existiert nicht mehr

    – Ashoka Lella

    3. September ’16 um 18:52

  • @AshokaLella: Das Paket existiert in Ordnung, aber das Projekt wurde von SF zu github verschoben. Ich habe den Link aktualisiert.

    – Aleksi Torhamo

    3. September ’16 um 20:25

1641967229 253 Dateianderungen ohne Abfrage erkennen duplicate
andere zwitschern

An Fenstern gibt es:

Beobachter, das ist ein netter Python-Port der .NET FileSystemWatcher API.

Auch da ist (der, den ich geschrieben habe) dirwatch.

Beide verlassen sich auf die Fenster ReadDirectoryChangesW Funktion. Obwohl ich für echte Arbeit verwenden würde Beobachter (richtige C-Erweiterung, gute API, Python 2 & 3 Unterstützung).

Meins ist hauptsächlich ein Experiment, das die relevanten APIs unter Windows aufruft, daher ist es nur interessant, wenn Sie ein Beispiel für den Aufruf dieser Dinge von Python aus haben möchten.

  • watcher scheint für eine Weile aufgegeben worden zu sein und verfügt nicht über eine ordnungsgemäße Dokumentation.

    – Chiffa

    1. September ’15 um 18:54

  • Ja, die Szenerie hat sich seit 2011 verändert… Sieht so aus, als ob Watchdog heutzutage die beste Wahl ist.

    – andere zwitschern

    1. September ’15 um 22:56

Das solltest du auch sehen innotifyx die dem zuvor erwähnten pyinotify sehr ähnlich ist, aber eine API haben soll, die sich weniger ändert.

.

422700cookie-checkDateiänderungen ohne Abfrage erkennen [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy