Python模块教程之fileinput

发布时间:2020-05-26编辑:脚本学堂
介绍下python中的报表模块fileinput的用法,分享一个简单的示例,学习下python fileinput模块的用法,有需要的朋友参考下。

本节内容:
pythonmokuai/ target=_blank class=infotextkey>python模块fileinput(报表服务器工具)。

需求:
将用户登陆系统的信息统计出来,做成一个报表。

当用户登陆成功时,服务器会往日志文件里写一条像下面这种格式的记录:”日期时间@用户名@IP“,这样的日志文件第天生成一个。

所以,只要编历这些日志文件,将所有的登陆信息提取出来,并重新组织数据格式就可以了。

用python写一个分析工具非常简单,当然用glob获取所有的日志文件,然后对每个日志文件都open(logfile),再一行一行的读取;
或用os.walk,也很简单。

其实,标准库提供了另一个辅助模块,可以非常方便的完成这个工作,那就是fileinput。

通过fileinput来编历所有的D盘下的文本文件,将每一行的长度打印出来:
 

复制代码 代码示例:
import fileinput 
from glob import glob 
 
for line in fileinput.input(glob(r'd:/*.txt')): 
    print fileinput.lineno(), u'文件:', fileinput.filename(), / 
            u'行号:', fileinput.filelineno(), u'长度:', len(line.strip('/n')) 
fileinput.close() 

代码说明:
input()接受要编历的所有文件路径的列表,通过filename()返回当前正在读取的文件的文件名,filelineno()返回当前读取的行的行号,而lineno()返回当前已经读取的行的数量(或者序号)。

其实,模块内部通过FileInput类来实现文件的编历读取,input()在内部创建了该类的一个对象,当处理完数据行之后,通过fileinput.close()来关闭这个内部对象。

模块非常简单,详细内容请参考python标准库手册。