fileinput模块能够轻松的遍历文本文件的所有行。
fileinput.input:它的工作方式和readlines很类似,不同点在于,它不是将全部的行读到列表中而是创建一个xreadlines对象。通过for循环遍历对象,可以将inplace参数设置为真值(inplace = True)以进行原地处理。
fileinput常用函数:
input: 便于遍历多个输入流中的行,它的工作方式和readlines很类似,不同点在于,它不是将全部的行读到列表中而是创建一个xreadlines对象。通过for循环遍历对象。
filename(): 返回当前文件的名称,返回当前正在处理的文件名
lineno(): 返回当前(累计)的行数,这个数值是累计的,从第一个文件到最后一个文件
filelineno(): 返回当前文件的行数,每一个文件都会重置为1
isfirstline(): 检查当前行是否是文件的第一行,返回布尔值
isstdin(): 检查最后一行是否来自sys.stdin,返回布尔值
nextfile(): 关闭当前文件,移动到下一个文件
close(): 关闭序列
例1:
-
import fileinput
-
for line in fileinput.input('/tmp/passwd'):
-
line = line.rstrip() # 这两个变量需要定义,再打印输出 rstrip() 内建函数 去除末尾字符,参数为空则为去除空格
-
num = fileinput.lineno()
-
print '%-10s # %2i' %(line,num) # 打印输出 %-20s 右边空出20个字节数,类型是str %2i 左边空出2个字符,类型是int
-
[root@server1 python]# ./rpasswd.py
-
root # 1
-
bin # 2
-
daemon # 3
如果inplace参数设置为真值(inplace = True),那么就是直接在源文件上修改,慎用。
-
#!/usr/bin/python
-
import fileinput
-
for line in fileinput.input(inplace=True):
-
line = line.rstrip()
-
num = fileinput.lineno()
-
print '%-10s # %2i' %(line,num)
-
-
[root@server1 python]# ./rpasswd.py /tmp/passwd # 无任何输出
-
[root@server1 python]# cat /tmp/passwd
-
root # 1
-
bin # 2
-
daemon # 3
以后遇到该模块的时候再补充。
阅读(1586) | 评论(0) | 转发(0) |