• Python模块学习 fileinput 成长的点滴,记录与分享 博客频道 CSDN.NET


    python 2.4 containing this module

    Python模块学习 ---- fileinput - 成长的点滴,记录与分享 - 博客频道 - CSDN.NET

    Python模块学习 ---- fileinput

    分类: Python 1240人阅读 评论(1) 收藏 举报

        这几天有这样一个需求,要将用户登陆系统的信息统计出来,做成一个报表。当用户登陆成功的时候,服务器会往日志文件里写一条像下面这种格式的记录:”日期时间@用户名@IP“,这样的日志文件第天生成一个。所以,我们只要编历这些日志文件,将所有的登陆信息提取出来,并重新组织数据格式就可以了。用python写一个分析工具非常简单,你会说,用glob获取所有的日志文件,然后对每个日志文件都open(logfile),再一行一行的读取;或者用os.walk,也很简单。其实,标准库提供了另一个辅助模块,我们可以非常方便的完成这个工作,那就是fileinput。下面我们就通过fileinput来编历所有的D盘下的文本文件,将每一行的长度打印出来:

    1. import fileinput  
    2. from glob import glob  
    3.   
    4. for line in fileinput.input(glob(r'd:/*.txt')):  
    5.     print fileinput.lineno(), u'文件:', fileinput.filename(), /  
    6.             u'行号:', fileinput.filelineno(), u'长度:', len(line.strip('/n'))  
    7. fileinput.close()  

        代码非常简单明了。input()接受要编历的所有文件路径的列表,通过filename()返回当前正在读取的文件的文件名,filelineno()返回当前读取的行的行号,而lineno()返回当前已经读取的行的数量(或者序号)。其实,模块内部通过FileInput类来实现文件的编历读取,input()在内部创建了该类的一个对象,当处理完数据行之后,通过fileinput.close()来关闭这个内部对象。

        模块非常简单,详细的内容可以参数标准库手册。

  • 相关阅读:
    PCL利用RANSAC自行拟合分割平面
    HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT
    BZOJ 3670 && BZOJ 3620 && BZOJ 3942 KMP
    BZOJ 1500 Splay 全操作
    Manacher
    POJ 2155 2维线段树 || 2维BIT
    BZOJ 1015 并查集+离线倒序
    NOI Linux JAVA
    UVA 10407 差分思想的运用
    BZOJ 1969 树链剖分+Tarjan缩点
  • 原文地址:https://www.cnblogs.com/lexus/p/2717261.html
Copyright © 2020-2023  润新知