Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171627
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-13 17:05
文章分类

全部博文(31)

文章存档

2016年(11)

2015年(20)

我的朋友

分类: LINUX

2016-01-16 21:18:36

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:

  1. import fileinput
  2. for line in fileinput.input('/tmp/passwd'):
  3.     line = line.rstrip()        # 这两个变量需要定义,再打印输出  rstrip() 内建函数 去除末尾字符,参数为空则为去除空格
  4.     num = fileinput.lineno()
  5.     print '%-10s # %2i' %(line,num)    # 打印输出    %-20s 右边空出20个字节数,类型是str  %2i 左边空出2个字符,类型是int
  6. [root@server1 python]# ./rpasswd.py
  7. root # 1
  8. bin # 2
  9. daemon # 3
如果inplace参数设置为真值(inplace = True),那么就是直接在源文件上修改,慎用。

  1. #!/usr/bin/python
  2. import fileinput
  3. for line in fileinput.input(inplace=True):
  4.     line = line.rstrip()
  5.     num = fileinput.lineno()
  6.     print '%-10s # %2i' %(line,num)

  7. [root@server1 python]# ./rpasswd.py /tmp/passwd     # 无任何输出
  8. [root@server1 python]# cat /tmp/passwd
  9. root # 1
  10. bin # 2
  11. daemon # 3

以后遇到该模块的时候再补充。
阅读(1586) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~