• Python中fileinput模块使用方法


        fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行。python2.7文档关于fileinput介绍:fileinput

      fileinput常用函数

    fileinput.input() #返回能够用于for循环遍历的对象

    fileinput.filename() #返回当前文件的名称

    fileinput.lineno() #返回当前已经读取的行的数量(或者序号)

    fileinput.filelineno() #返回当前读取行的行号

    fileinput.isfirstline() #检查当前行是否是文件的第一行

    fileinput.isstdin() #判断最后一行是否从stdin中读取

    fileinput.close() #关闭队列

      重点函数input介绍

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

      参数说明如下:

    files #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]

    inplace #是否将标准输出的结果写回文件,默认值为Fasle不取代

    backup #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。

    bufsize #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可

    mode #读写模式,默认为只读

    openhook #该钩子用于控制打开的所有文件,比如说编码方式等;

      常用实例

    (1)查看指定文件内容

    #-*- coding:utf-8 -*-#

    import fileinput

    for line in fileinput.input('/etc/passwd'):

      print line,

    (2)修改指定文件内容,并备份原文件

    #-*- coding:utf-8 -*-#

    import fileinput

    for line in fileinput.input('ip.txt',backup='.bak',inplace=1):

        print line.replace('192.168.0.1','10.10.10.10'),

      说明:注意print语句最后有一个逗号,否则修改后的文件每一行下方会多出一个空行

    (3)修改指定目录下的所有以.txt后缀的文件内容,不对原文件进行备份

    #-*- coding:utf-8 -*-#

    import fileinput

    import glob

    for line in fileinput.input(files=glob.glob('./*.txt'),inplace=1):

        print line.replace('192.168.0.1','10.10.10.10'),

    (4)在文件每行的起始处添加行号。注意使用fileinput.filelineno()和fileinput.lineno()的区别。lineno()会在前一个文件行数的基础上+1开始执行。

    #-*- coding:utf-8 -*-#

    import fileinput

    for eachLine in fileinput.input(files=['temp1.txt', 'temp2.txt'], inplace=True):

        print "Line " + str(fileinput.filelineno()) + ': ' + eachLine,

      (5)在每个文件的开始处打印文件名。

    #-*- coding:utf-8 -*-#

    import fileinput

    for eachLine in fileinput.input(files=['temp1.txt', 'temp2.txt'], inplace=True):

        if fileinput.isfirstline():

            print fileinput.filename()

        print eachLine,

  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/linyfeng/p/7118492.html
Copyright © 2020-2023  润新知