fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作。
该模块的input()函数有点类似文件readlines()方法,区别在于:
前者是一个迭代对象,即每次只生成一行,需要用for循环迭代。
后者是一次性读取所有行。在碰到大文件的读取时,前者无疑效率更高效。
用fileinput对文件进行循环遍历,格式化输出,查找、替换等操作,非常方便。
【典型用法】
import fileinput
for line in fileinput.input():
process(line)
【基本格式】
fileinput.input([files[, inplace[, backup[, bufsize[, mode[, openhook]]]]]])
【默认格式】
fileinput.input (files=None, inplace=False, backup='', bufsize=0, mode='r', penhook=None)
- files:
- inplace:
- backup:
- bufsize:
- mode:
- openhook:
【常用函数】- fileinput.input()
- fileinput.filename()
- fileinput.lineno()
- fileinput.filelineno()
- fileinput.isfirstline()
- fileinput.isstdin()
- fileinput.close()
【常见例子】
- 例子01: 利用fileinput读取一个文件所有行
- >>> import fileinput
- >>> for line in fileinput.input('data.txt'):
- print line,
-
- Python
- Java
- C/C++
- Shell
命令行方式:
-
- import fileinput
-
- for line in fileinput.input():
- print fileinput.filename(),'|','Line Number:',fileinput.lineno(),'|: ',line
-
- c:>python test.py data.txt
- data.txt | Line Number: 1 |: Python
- data.txt | Line Number: 2 |: Java
- data.txt | Line Number: 3 |: C/C++
- data.txt | Line Number: 4 |: Shell
- 例子02: 利用fileinput对多文件操作,并原地修改内容
-
-
- c:\Python27>type 1.txt
- first
- second
-
- c:\Python27>type 2.txt
- third
- fourth
-
- import fileinput
-
- def process(line):
- return line.rstrip() + ' line'
-
- for line in fileinput.input(['1.txt','2.txt'],inplace=1):
- print process(line)
-
-
-