So etwas wie tail -f in Python

Originalgeschichte: [tail -f in Python] (http://qiita.com/sakamotomsh/items/f1cc47010a90e1e790fb)

[Wie Schwanz in Python] (http://blog.liris.org/2010/01/pythontail.html) Ich denke nicht, dass es so schwer ist.

Kürzlich habe ich einen Artikel gesehen, in dem watchdog nützlich ist.

Ich habe versucht, dies für die Dateiüberwachung zu verwenden. Um es vom Betriebssystem unabhängig zu machen [PollingObserver] Es scheint zu verwenden (http://pythonhosted.org//watchdog/api.html#module-watchdog.observers.polling).

tail-f.py


#!/usr/bin/env python
import os
import sys
import time
from os.path import dirname, exists

from watchdog.events import FileSystemEventHandler
from watchdog.observers.polling import PollingObserver


class TailHandler(FileSystemEventHandler):

    def __init__(self, path):
        self.path = path
        self.file = open(path, 'r')
        self.pos = os.stat(path)[6]

    def close(self):
        self.file.close()

    def print_line(self):
        self.file.seek(self.pos)
        for block in iter(lambda: self.file.read(32), ''):
            print(block, end='')
        self.pos = self.file.tell()

    def on_modified(self, event):
        if event.is_directory or self.path != event.src_path:
            return
        self.print_line()


def tail_like(path):
    observer = PollingObserver()
    handler = TailHandler(path)
    observer.schedule(handler, dirname(path))
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    finally:
        handler.close()
    observer.join()


def main():
    path = sys.argv[1]
    if not exists(path):
        print('{} is not found'.format(path))
        return 
    tail_like(path)


if __name__ == '__main__':
    main()

Gehen Sie in jedem Terminal wie folgt vor:

$ vm_stat -c 60 0.3 >> logs/vmstat.log
$ python tail-f.py logs/vmstat.log

Recommended Posts

So etwas wie tail -f in Python
So etwas wie JS setTimeout in Python
Führen Sie so etwas wie Redis-Transaktionen in Python aus
Ich möchte so etwas wie Uniq in Python sortieren
Zeigen Sie Zeichen wie AA in Python an
Machen Sie so etwas wie einen Python-Interpreter mit Visual Studio Code
So etwas wie 40-32 / 2 = 4!
Ich wollte so etwas wie Elixirs Pipe in Python machen
Suchen Sie nach Dateien wie Linux Find in Python
# Ich habe so etwas wie Vlookup mit Python # 2 ausprobiert
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
Schritt AIC in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Konvertieren Sie Unicode-Escape-Sequenzen wie \ u in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python
Lesen Sie DXF mit Python
Täglicher AtCoder # 53 in Python
Tastenanschlag in Python