linux - python如何从后往前读取文件?
PHPz
PHPz 2017-04-18 09:25:24
0
3
913

小弟想在web上显示log文件的最新的五十条,遇到这个问题,希望大家帮帮忙。不甚感激。

PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
PHPzhong

file.readlines()[-50:]

大家讲道理

Plusieurs façons :

  1. Utiliser le sous-processus pour ajuster tail -f

  2. Utilisez pyinotiy pour surveiller les modifications de fichiers

  3. Implémentez-le vous-même, par exemple, obtenez d'abord la taille du fichier, lisez le dernier octet, puis revenez au premier n, qui est la dernière ligne, puis revenez dans l'ordre

刘奇

Toutes les méthodes mentionnées ci-dessus sont réalisables, mais la méthode de @nealnote peut entraîner des problèmes de performances si vous lisez des fichiers volumineux. Il est recommandé d'utiliser ce que @manong a dit : subprocessréglez un unix programme fourni avec le système. la mise en œuvre spécifique est la suivante : tail

import subprocess


fh = subprocess.Popen("tail -n 50 /var/log/dmesg", stdout=subprocess.PIPE, shell=True)
for line in fh.stdout.readlines():
    print(line.decode('ascii'), end="")
Exécuter les résultats :

...
...
rdac: device handler registered
device-mapper: multipath round-robin: version 1.0.0 loaded
EXT4-fs (sdd5): mounted filesystem with ordered data mode. Opts: 
EXT4-fs (sdd2): mounted filesystem with ordered data mode. Opts: 
EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: 
EXT4-fs (dm-0): warning: maximal mount count reached, running e2fsck is recommended
EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: 
Adding 1023996k swap on /dev/sdd3.  Priority:-1 extents:1 across:1023996k 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal