Python Fileinput 模块
作者博文地址:http://www.cnblogs.com/liu-shuai/
fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行。
【默认格式】
fileinput.input (files='filename', inplace=False, backup='', bufsize=0, mode='r', openhook=None)
1 files: #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]
2 inplace: #是否将标准输出的结果写回文件,默认不取代
3 backup: #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。
4 bufsize: #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可
5 mode: #读写模式,默认为只读
6 openhook: #该钩子用于控制打开的所有文件,比如说编码方式等;
【常用函数】
1 fileinput.input() #返回能够用于for循环遍历的对象
2 fileinput.filename() #返回当前文件的名称
3 fileinput.lineno() #返回当前已经读取的行的数量(或者序号)
4 fileinput.filelineno() #返回当前读取的行的行号
5 fileinput.isfirstline() #检查当前行是否是文件的第一行
6 fileinput.isstdin() #判断最后一行是否从stdin中读取
7 fileinput.close() #关闭队列
【使用实例】
1、使用fileinput查看文件所有行
1 #cat user.txt
2 Jack
3 Rain
4 Tom
5 Suse
6 ####################################################
7 #cat f_replace.py
8 #!/usr/bin/env python
9 import fileinput
10 for line in fileinput.input('user.txt'):
11 print line,
12 ####################################################
13 #执行代码
14 #python f_replace.py
15 #输出结果
16 Jack
17 Rain
18 Tom
19 Suse
2、使用fileinput修改文件并备份原文件
1 #ls ./
2 user.txt
3 #cat user.txt
4 Jack
5 Rain
6 Tom
7 Suse
8 ####################################################
9 #cat f_replace.py
10 #!/usr/bin/env python
11 import fileinput
12 for line in fileinput.input('user.txt',backup='.bak',inplace=1):
13 line = line.replace('Rain','Jerry')
14 print line,
15 ####################################################
16 #执行代码
17 #python f_replace.py
18 #输出结果
19 #ls ./
20 user.txt user.txt.bak
21 #cat user.txt
22 Jack
23 Jerry
24 Tom
25 Suse
4、使用fileinput输出当前行号和行内容
1 #cat user.txt
2 Jack
3 Rain
4 Tom
5 Suse
6 ####################################################
7 #cat f_replace.py
8 #!/usr/bin/env python
9 import fileinput
10 for line in fileinput.input('user.txt'):
11 lineno = fileinput.lineno()
12 print lineno,line,
13 ####################################################
14 #执行代码
15 #python f_replace.py
16 #输出结果
17 1 Jack
18 2 Rain
19 3 Tom
20 4 Suse
5、使用fileinput判断是否为第一行
1 #cat user.txt
2 Jack
3 Rain
4 Tom
5 Suse
6 ####################################################
7 #cat f_replace.py
8 #!/usr/bin/env python
9 import fileinput
10 for line in fileinput.input('user.txt'):
11 if fileinput.isfirstline():
12 print line,
13 break
14 ####################################################
15 #执行代码
16 #python f_replace.py
17 #输出结果
18 Jack
6、使用fileinput过滤系统文件message
1 #!/user/bin/env python
2 #coding=UTF8
3
4 import os
5 import fileinput
6 import re
7 from sys import exit
8 logfiles = os.listdir("/var/log/")
9 pattern="messages-*\d*"
10 msgfiles=[]
11 for log in logfiles:
12 if re.match(pattern,log):
13 print log
14 msgfiles.append("/var/log/"+log)
15 print(msgfiles)
16 while True:
17 find_str = raw_input("please input search key word:")
18 find_str = find_str.strip()
19 print(find_str)
20 if find_str =='':
21 continue
22 elif find_str.lower() =="q" or find_str.lower() =="quit":
23 print('bye bye!')
24 exit(0)
25 else:
26 for line in fileinput.input(msgfiles):
27 if find_str in line:
28 print("filename:%s \nfileline:%s\ncontent:%s" %(fileinput.filename(),fileinput.filelineno(),line))
Python Fileinput 模块的更多相关文章
- Python Fileinput 模块介绍
作者博文地址:http://www.cnblogs.com/spiritman/ fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行. [默 ...
- Python fileinput模块详解
Python的fileinput模块可以快速对一个或多个文件进行循环遍历. import fileinput for line in fileinput.input(): process(line) ...
- Python基础【第十一篇】文件操作(file()、open()方法和fileinput模块)
一.file/open 内置函数 file函数的方法: 注:file 和 open的用法和功能相同这里只对file进行分析 file(‘filename’,’mode’) file(‘filename ...
- Python中fileinput模块使用
fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作.该模块的input()函数有点类似文件 readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次 ...
- Python第二十一天 fileinput模块
Python第二十一天 fileinput模块 fileinput模块 fileinput.input([files[, inplace[, backup[, bufsize[, mode[, ...
- 洗礼灵魂,修炼python(19)--文件I/O操作,linecache,fileinput模块
文件I/O操作 1.什么是文件I/O操作 首先I/O(input/output),即输入/输出端口,然后文件,大家应该都是是什么,一个数据,一个txt或者html文档就是一个文件.文件操作就是对文件进 ...
- Python中fileinput模块使用方法
fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行.python2.7文档关于fileinput介绍:fileinput fileinp ...
- python标准库介绍——15 fileinput 模块详解
``fileinput`` 模块允许你循环一个或多个文本文件的内容, 如 [Example 2-1 #eg-2-1] 所示. ====Example 2-1. 使用 fileinput 模块循环一个文 ...
- fileinput模块
刚才练习的时候,报如下错误: AttributeError: module 'fileinput' has no attribute 'input',后来Google参考这篇文章https://mai ...
随机推荐
- 编写高质量代码改善C#程序的157个建议——建议16:元素数量可变的情况下不应使用数组
建议16:元素数量可变的情况下不应使用数组 在C#中,数组一旦被创建,长度就不能改变.如果我们需要一个动态且可变长度的集合,就应该使用ArrayList或List<T>来创建. 而数组本身 ...
- SNMP协议学习笔记
什么是SNMP协议? SNMP协议是以UDP为基础的应用层协议,全称为 简单网络管理协议,用于网络管理系统与被管设备(路由器,交换机,服务器等设备)进行通信. 应用场景 随着网络设备的增多,需要单独的 ...
- Go语言最佳实践——异常和错误
Go语言将错误和异常两者区分对待. 1.Go语言中处理错误的惯用法是将错误以函数或者方法最后一个返回值的形式将其返回,并总是在调用它的地方检查返回的错误值. 2.对于“不可能发生的事情”称为异常,可使 ...
- 合并datagridview 条件合并行数据
public void HeBing() { int rowsCount; int CellCount; rowsCount = FG1.Rows.Count; CellCount = FG1.Col ...
- Xamarin 笔记
1. 报类 $(_DeviceSdkVersion) >= 21 异常,提示部署失败 解决办法:升级 xamarin for visual studio 2. 新建项目时,报“程序包安装错误”: ...
- 题解 CF948A 【Protect Sheep】
题目链接 额..这道题亮点在: $you$ $do$ $not$ $need$ $to$ $minimize$ $their$ $number.$ 所以说嘛... 直接判断狼的四周有没有紧挨着的羊,没 ...
- Link cut tree 实现不高效的 LCA
https://www.luogu.org/problemnew/show/P3379 求 a 和 b 的 LCA 考虑先 access(a),此时 a 和 root 在一条链上,再 access(b ...
- upsource代码审查
upsource 从零搭建代码审查平台,需要的不仅是把代码审查的工具搭起来,还要结合公司情况制定一系列的代码审查规范.下面是对选择的upsource web端代码审查工具的安装及介绍.详细的请看这篇文 ...
- AtCoder - 2568 最小割
There is a pond with a rectangular shape. The pond is divided into a grid with H rows and W columns ...
- JS 节点的属性 与 元素
节点的属性{ nodeType 是节点的类型: nodeNam 是节点的名字 nodeValue 节点的值 }可以用节点.属性 取得三个属性的值 节点.nodeType 出来的 ...