zoukankan      html  css  js  c++  java
  • Python Fileinput 模块

    作者博文地址:http://www.cnblogs.com/liu-shuai/

    fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行。

    【默认格式】

        fileinput.input (files='filename', inplace=False, backup='', bufsize=0, mode='r', openhook=None)

    1 files:         #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]
    2 inplace:       #是否将标准输出的结果写回文件,默认不取代
    3 backup:        #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。
    4 bufsize:       #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可
    5 mode:      #读写模式,默认为只读
    6 openhook:    #该钩子用于控制打开的所有文件,比如说编码方式等;        

    【常用函数】

    1 fileinput.input()       #返回能够用于for循环遍历的对象
    2 fileinput.filename()    #返回当前文件的名称
    3 fileinput.lineno()      #返回当前已经读取的行的数量(或者序号)
    4 fileinput.filelineno()  #返回当前读取的行的行号
    5 fileinput.isfirstline() #检查当前行是否是文件的第一行
    6 fileinput.isstdin()     #判断最后一行是否从stdin中读取
    7 fileinput.close()       #关闭队列

    【使用实例】

    1、使用fileinput查看文件所有行
    1 #cat user.txt 2 Jack 3 Rain 4 Tom 5 Suse 6 #################################################### 7 #cat f_replace.py 8 #!/usr/bin/env python 9 import fileinput 10 for line in fileinput.input('user.txt'): 11 print line, 12 ####################################################
    13 #执行代码 14 #python f_replace.py 15 #输出结果 16 Jack 17 Rain 18 Tom 19 Suse
    2、使用fileinput修改文件并备份原文件
    1 #ls ./
    2 user.txt
    3 #cat user.txt 4 Jack 5 Rain 6 Tom 7 Suse 8 #################################################### 9 #cat f_replace.py 10 #!/usr/bin/env python 11 import fileinput 12 for line in fileinput.input('user.txt',backup='.bak',inplace=1): 13 line = line.replace('Rain','Jerry') 14 print line, 15 #################################################### 16 #执行代码
    17 #python f_replace.py 18 #输出结果
    19 #ls ./
    20 user.txt user.txt.bak
    21 #cat user.txt 22 Jack 23 Jerry 24 Tom 25 Suse

    4、使用fileinput输出当前行号和行内容 
    1 #cat user.txt 2 Jack 3 Rain 4 Tom 5 Suse 6 #################################################### 7 #cat f_replace.py 8 #!/usr/bin/env python 9 import fileinput 10 for line in fileinput.input('user.txt'): 11 lineno = fileinput.lineno() 12 print lineno,line, 13 #################################################### 14 #执行代码 15 #python f_replace.py 16 #输出结果 17 1 Jack 18 2 Rain 19 3 Tom 20 4 Suse
    5、使用fileinput判断是否为第一行
    1 #cat user.txt 2 Jack 3 Rain 4 Tom 5 Suse 6 #################################################### 7 #cat f_replace.py 8 #!/usr/bin/env python 9 import fileinput 10 for line in fileinput.input('user.txt'): 11 if fileinput.isfirstline(): 12 print line, 13 break 14 #################################################### 15 #执行代码 16 #python f_replace.py 17 #输出结果 18 Jack
    6、使用fileinput过滤系统文件message
    1 #!/user/bin/env python 2 #coding=UTF8 3 4 import os 5 import fileinput 6 import re 7 from sys import exit 8 logfiles = os.listdir("/var/log/") 9 pattern="messages-*d*" 10 msgfiles=[] 11 for log in logfiles: 12 if re.match(pattern,log): 13 print log 14 msgfiles.append("/var/log/"+log) 15 print(msgfiles) 16 while True: 17 find_str = raw_input("please input search key word:") 18 find_str = find_str.strip() 19 print(find_str) 20 if find_str =='': 21 continue 22 elif find_str.lower() =="q" or find_str.lower() =="quit": 23 print('bye bye!') 24 exit(0) 25 else: 26 for line in fileinput.input(msgfiles): 27 if find_str in line: 28 print("filename:%s fileline:%s content:%s" %(fileinput.filename(),fileinput.filelineno(),line))
  • 相关阅读:
    蛙蛙推荐:改进了一个DBAccess类,顺便说说啥是线程安全
    蛙蛙推荐:SQLServer优化资料整理
    快速配置Eclipse3.1.1+Tomcat5.0+Lomboz dodo
    建立asp.net应用程序提示:无法与服务器建立连接 dodo
    tomcat连接sqlserver配置 dodo
    如何让DNN页面中的html控件中的文本项显示为中文? dodo
    DropDownList 不能有多个项被选定 dodo
    转换DATAREADER为 dataset dodo
    使用ComponentArt.WebUI.for.Asp.net.3.0的TreeView控件 dodo
    ASP.NET的WEB项目不能添加WEB用户控件的解决 dodo
  • 原文地址:https://www.cnblogs.com/liu-shuai/p/6098302.html
Copyright © 2011-2022 走看看