python标准库学习3-fileinput

来源:互联网 发布:华讯网络好吗 编辑:程序博客网 时间:2024/05/22 14:03
  fileinput模块让你轻松遍历文本文件的所有行,与readlines()不同的是fileinput模块是逐行进行遍历,而readlines是一次读取全部到内存中.
使用python script.py file1.txt file2.txt ...基本使用方法如下:
import fileinput
 
for line in fileinput.input():
process(line)
fileinput中重要的函数:
1.input(files[,inplace,[backup]]):遍历多个输入的文件.inplace设置为True的时候直接在源文件中修改,backup参数将文件名扩展到通过原始文件创建的备份文件中,input=1类似于sed -i参数
2.filename():返回当前文件的名称
3.lineno():返回当前累计的行数
4.filelineno():返回当前文件的行数
5.isfirstline():检查当前行是否是文件的第一行
6.isstdin():检查最后一行是否来至sys.stdin
7.nextfile():关闭当前文件,移动到下一个文件,这在逐个文件进行处理的时候可能很有用
8.close():关闭序列
下面这个是书上的例子,在文件每一行的末尾添加一个#行号
[root@python ~]# cat 1.py
#!/usr/bin/env python
import fileinput
import os
 
for line in fileinput.input(inplace=1,backup='.bak'):
line=line.rstrip()
num=fileinput.lineno()
print '%-80s # %2i' % (line,num)
解释一下,inplace=1说明直接在源文件进行修改,backup='.bak'说明在修改之前会将源文件备份,文件名我源文件名.bak
line.rstrip()是将每行的末尾的空格删除
fileinput.lineno()是记录当前处理的行
%-80s的意思是左对齐,宽度为80,如果行的长度不满80则最后以空格填充,如果满80则返回全部数据
%2i的意思是宽度为2的整形
下面是具体的处理结果:
[root@python ~]# cat 1.txt
Traceback (most recent call last):
File "./1.py", line 10, in <module>
print a[i]
IndexError: list index out of range
[root@python ~]# ./1.py 1.txt
[root@python ~]# cat 1.txt
Traceback (most recent call last): # 1
File "./1.py", line 10, in <module> # 2
print a[i] # 3
IndexError: list index out of range # 4
[root@python ~]# ls 1.txt*
1.txt 1.txt.bak
[root@python ~]# cat 1.txt.bak
Traceback (most recent call last):
File "./1.py", line 10, in <module>
print a[i]
IndexError: list index out of range










0 0
原创粉丝点击