天天看点

python标准库学习3-fileinput

  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():关闭序列 下面这个是书上的例子,在文件每一行的末尾添加一个#行号

[[email protected] ~]# 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的整形 下面是具体的处理结果:

[[email protected] ~]# cat 1.txt              Traceback (most recent call last):              File "./1.py", line 10, in <module>              print a[i]                                    IndexError: list index out of range                   [[email protected] ~]# ./1.py 1.txt              [[email protected] ~]# 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                  [[email protected] ~]# ls 1.txt*              1.txt      1.txt.bak                [[email protected] ~]# 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