zoukankan      html  css  js  c++  java
  • python fileinput模块

    fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的input()函数有点类似文件

    readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次性读取所有行。

    用fileinput对文件进行循环遍历,格式化输出,查找、替换等操作,非常方便。

    import fileinput
    for line in fileinput.input():
        process(line)

    默认格式

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

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

    利用fileinput读取一个文件所有行

    >>> import fileinput
    >>> for line in fileinput.input('data.txt'):
        print line,
    #输出结果
    Python
    Java 
    C/C++
    Shell
    #test.py
    import fileinput
     
    for line in fileinput.input():
        print fileinput.filename(),'|','Line Number:',fileinput.lineno(),'|: ',line
     
    c:>python test.py data.txt
    data.txt | Line Number: 1 |:  Python
    data.txt | Line Number: 2 |:  Java
    data.txt | Line Number: 3 |:  C/C++
    data.txt | Line Number: 4 |:  Shell

    用fileinput对多文件操作,并原地修改内容

    #---样本文件---
    c:Python27>type 1.txt
    first
    second
     
    c:Python27>type 2.txt
    third
    fourth
    #---样本文件---
    import fileinput
     
    def process(line):
        return line.rstrip() + ' line'
     
    for line in fileinput.input(['1.txt','2.txt'],inplace=1):
        print process(line)
     
    #---结果输出---
    c:Python27>type 1.txt
    first line
    second line
     
    c:Python27>type 2.txt
    third line
    fourth line

    命令行方式:

    #test.py
    import fileinput
     
    def process(line):
        return line.rstrip() + ' line'
     
    for line in fileinput.input(inplace = True):
        print process(line)
     
    #执行命令
    c:Python27>python test.py 1.txt 2.txt

    利用fileinput实现文件内容替换,并将原文件作备份

    #样本文件:
    #data.txt
    Python
    Java
    C/C++
    Shell
     
    #FileName: test.py
    import fileinput
     
    for line in fileinput.input('data.txt',backup='.bak',inplace=1):
        print line.rstrip().replace('Python','Perl')  #或者print line.replace('Python','Perl'),
         
    #最后结果:
    #data.txt
    Python
    Java
    C/C++
    Shell
    #并生成:
    #data.txt.bak文件
     
  • 相关阅读:
    Java 处理cookie的方法
    HTML5的新标签-整体布局
    Git学习文档——文件状态git status
    Css中路径data用法
    python2
    hangfire
    Nginx系列~Nginx服务启动不了
    git形成本地仓库并从远处url拉取
    orcal和sql server中的字符串查找函数
    Eclipse 修改项目名称
  • 原文地址:https://www.cnblogs.com/journey-mk5/p/9469751.html
Copyright © 2011-2022 走看看