linux - python如何从后往前读取文件?
PHPz
PHPz 2017-04-18 09:25:24
[Python讨论组]

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

PHPz
PHPz

学习是最好的投资!

全部回复(3)
PHPz

file.readlines()[-50:]

大家讲道理

几种方式:

  1. 用subprocess调tail -f

  2. 用pyinotiy监听文件变化

  3. 自己实现,比如先拿到文件大小,读到最后一个字节,然后往回退到第一个n,这就是倒数第一行了,然后依次往回退

怪我咯

楼上几位说的都可行, 不过 @nealnote 的方法如果读大文件会有性能问题, 建议用 @manong 所说, subprocessunix系统自带的一个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="")

运行结果:

...
...
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 
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号