首页IT科技python file stdin(Python模块学习 fileinput 成长的点滴,记录与分享 博客频道 CSDN.NET)

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

时间2025-06-20 08:28:11分类IT科技浏览4219
导读:分类: Python 2010-11-03 14:10...

分类: Python 2010-11-03 14:10 1240人阅读 评论(1) 收藏 举报

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

[python] view plaincopyprint?
importfileinput fromglobimportglob forlineinfileinput.input(glob(rd:/*.txt)): printfileinput.lineno(),u文件:,fileinput.filename(),/ u行号:,fileinput.filelineno(),u长度:,len(line.strip(/n)) fileinput.close()
import fileinput from glob import glob for line in fileinput.input(glob(rd:/*.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()来关闭这个内部对象                  。

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

声明:本站所有文章           ,如无特殊说明或标注,均为本站原创发布。任何个人或组织                  ,在未征得本站同意时                 ,禁止复制            、盗用                  、采集     、发布本站内容到任何网站      、书籍等各类媒体平台                  。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理                 。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
留住用户,不能再单靠流量与社群营销了!(探讨用户留存的新思路与新方法,共谋网站发展大计!)