ghong6003的个人空间 https://blog.eetop.cn/1430538 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

【转】python 之fileinput模块

已有 721 次阅读| 2018-3-25 14:15 |个人分类:Python|系统分类:芯片设计

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)

[python] view plain copy
  1. files:                  #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]  
  2. inplace:                #是否将标准输出的结果写回文件,默认不取代  
  3. backup:                 #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。  
  4. bufsize:                #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可  
  5. mode:                   #读写模式,默认为只读  
  6. openhook:               #该钩子用于控制打开的所有文件,比如说编码方式等;  
常用函数
[python] view plain copy
  1. fileinput.input()       #返回能够用于for循环遍历的对象  
  2. fileinput.filename()    #返回当前文件的名称  
  3. fileinput.lineno()      #返回当前已经读取的行的数量(或者序号)  
  4. fileinput.filelineno()  #返回当前读取的行的行号  
  5. fileinput.isfirstline() #检查当前行是否是文件的第一行  
  6. fileinput.isstdin()     #判断最后一行是否从stdin中读取  
  7. fileinput.close()       #关闭队列  

常见例子

  • 例子01: 利用fileinput读取一个文件所有行
[python] view plain copy
  1. >>> import fileinput  
  2. >>> for line in fileinput.input('data.txt'):  
  3.         print line,  
  4. #输出结果  
  5. Python  
  6. Java   
  7. C/C++  
  8. Shell  

命令行方式:

[python] view plain copy
  1. #test.py  
  2. import fileinput  
  3.   
  4. for line in fileinput.input():  
  5.     print fileinput.filename(),'|','Line Number:',fileinput.lineno(),'|: ',line  
  6.   
  7. c:>python test.py data.txt  
  8. data.txt | Line Number: 1 |:  Python  
  9. data.txt | Line Number: 2 |:  Java  
  10. data.txt | Line Number: 3 |:  C/C++  
  11. data.txt | Line Number: 4 |:  Shell  
  • 例子02: 利用fileinput对多文件操作,并原地修改内容
[python] view plain copy
  1. #test.py  
  2. #---样本文件---  
  3. c:\Python27>type 1.txt  
  4. first  
  5. second  
  6.   
  7. c:\Python27>type 2.txt  
  8. third  
  9. fourth  
  10. #---样本文件---  
  11. import fileinput  
  12.   
  13. def process(line):  
  14.     return line.rstrip() + ' line'  
  15.   
  16. for line in fileinput.input(['1.txt','2.txt'],inplace=1):  
  17.     print process(line)  
  18.   
  19. #---结果输出---  

  20. 点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 3

    粉丝
  • 0

    好友
  • 2

    获赞
  • 1

    评论
  • 1539

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 13:29 , Processed in 0.027015 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部