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判断windows隐藏文件的方法
Mar 21 Python
详解Python3中yield生成器的用法
Aug 20 Python
Python简单删除列表中相同元素的方法示例
Jun 12 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
django实现模型字段动态choice的操作
Apr 01 Python
PyTorch中的C++扩展实现
Apr 02 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
Python暴力破解Mysql数据的示例
Nov 09 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
使用PHP制作新闻系统的思路
2006/10/09 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python中的random()方法的使用介绍
2015/05/15 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
销售活动策划方案
2014/08/26 职场文书
公司租房协议书范本
2014/10/08 职场文书
Python实现双向链表基本操作
2022/05/25 Python