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 查找文件夹下所有文件 实现代码
Jul 01 Python
Python中os和shutil模块实用方法集锦
May 13 Python
跟老齐学Python之有点简约的元组
Sep 24 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
深入理解Django自定义信号(signals)
Oct 15 Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 Python
python 直接赋值和copy的区别详解
Aug 07 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python新手如何理解循环加载模块
May 29 Python
python开发实时可视化仪表盘的示例
May 07 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中的curl_multi系列函数使用例子
2014/07/29 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python批量修改文件名的示例
2020/09/27 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
《雕塑之美》教学反思
2014/04/24 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
大学生学习计划书
2014/09/15 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
Python利用capstone实现反汇编
2022/04/06 Python
Golang 实现WebSockets
2022/04/24 Golang