Python中的fileinput模块的简单实用示例


Posted in Python onJuly 09, 2015

这几天有这样一个需求,要将用户登陆系统的信息统计出来,做成一个报表。当用户登陆成功的时候,服务器会往日志文件里写一条像下面这种格式的记录:”日期时间@用户名@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 相关文章推荐
python解析模块(ConfigParser)使用方法
Dec 10 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python OS模块常用函数说明
May 23 Python
python搭建微信公众平台
Feb 09 Python
Python爬取京东的商品分类与链接
Aug 26 Python
Python连接PostgreSQL数据库的方法
Nov 28 Python
python 重定向获取真实url的方法
May 11 Python
浅析PHP与Python进行数据交互
May 15 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 #Python
python冒泡排序简单实现方法
Jul 09 #Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 #Python
python简单猜数游戏实例
Jul 09 #Python
Python使用turtule画五角星的方法
Jul 09 #Python
python查看zip包中文件及大小的方法
Jul 09 #Python
Python基于checksum计算文件是否相同的方法
Jul 09 #Python
You might like
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
浅析PHP文件下载原理
2014/12/25 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
前端性能优化建议
2020/09/17 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python实现简单点对点(p2p)聊天
2017/09/13 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
浅谈django 重载str 方法
2020/05/19 Python
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
护理专业推荐信
2013/11/07 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
电台实习生求职信
2014/02/25 职场文书
个人主要事迹材料
2014/08/26 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
检察院起诉书
2015/05/20 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python