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

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

时间2025-05-05 16:53:45分类IT科技浏览3545
导读:分类: 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
js回收机制怎么回收的(JavaScript垃圾回收机制原理总结深入探究)