python file stdin(Python模块学习 fileinput 成长的点滴,记录与分享 博客频道 CSDN.NET)
这几天有这样一个需求 ,要将用户登陆系统的信息统计出来 ,做成一个报表 。当用户登陆成功的时候 ,服务器会往日志文件里写一条像下面这种格式的记录: ”日期时间@用户名@IP“ ,这样的日志文件第天生成一个 。所以 ,我们只要编历这些日志文件 ,将所有的登陆信息提取出来 ,并重新组织数据格式就可以了 。用python写一个分析工具非常简单 ,你会说 ,用glob获取所有的日志文件,然后对每个日志文件都open(logfile) ,再一行一行的读取;或者用os.walk ,也很简单 。其实,标准库提供了另一个辅助模块 ,我们可以非常方便的完成这个工作 ,那就是fileinput 。下面我们就通过fileinput来编历所有的D盘下的文本文件,将每一行的长度打印出来:
代码非常简单明了 。input()接受要编历的所有文件路径的列表 ,通过filename()返回当前正在读取的文件的文件名 ,filelineno()返回当前读取的行的行号 ,而lineno()返回当前已经读取的行的数量(或者序号) 。其实 ,模块内部通过FileInput类来实现文件的编历读取 ,input()在内部创建了该类的一个对象 ,当处理完数据行之后 ,通过fileinput.close()来关闭这个内部对象 。
模块非常简单 ,详细的内容可以参数标准库手册 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!