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,

Python中fileinput模块使用方法的更多相关文章

  1. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  2. Python中fileinput模块使用

    fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作.该模块的input()函数有点类似文件 readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次 ...

  3. Python中安装模块的方法

    1.*nix系统上有一个地方专门有一个地方来放置安装的Python模块 比如在Mac上,这个目录的路径为: /usr/lib/python2.7 将要安装的文件拷贝到这里即可 2.下载模块包,解压后, ...

  4. Python中os模块使用方法

    os模块提供了对系统环境.文件.目录等操作系统级的接口函数.本文主要描述os模块和os.path模块常用函数以及常用实例. os模块函数 os.getcwd() 获取当前工作的目录. os.listd ...

  5. python中os模块函数方法详解最全最新

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 import os print(os.getcwd()) os.chdir("dirname") 改 ...

  6. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  7. python中os模块中文帮助

    python中os模块中文帮助   python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ...

  8. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  9. Python中的模块介绍和使用

    在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...

随机推荐

  1. 绘制字母和数字组合的验证码(原生php)

    <?php $font = array('font/FZZQJW.TTF','font/STHUPO.TTF');//字体 $str = '689acdefhjkmnpqrtuvwxyACDEF ...

  2. MySQL查询表的所有列名,用逗号拼接

    问题场景 在MySQL中,需要以逗号拼接一个表的所有字段 sql语句 SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ",") FROM inf ...

  3. tp5 计算两个日期之间相差的天数

    //两个日期之间相差的天数 function diffBetweenTwoDays ($day1, $day2) { $second1 = strtotime($day1); $second2 = s ...

  4. CentOS7.4安装部署openstack [Liberty版] (二)

    继上一篇博客CentOS7.4安装部署openstack [Liberty版] (一),本篇继续讲述后续部分的内容 一.添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储 ...

  5. Ubuntu下RabbitMQ安装

    由于RabbitMQ需要erlang语言的支持,在安装RabbitMQ之前需要安装erlang,执行命令: sudo apt-get install erlang-nox 安装RabbitMQ命令: ...

  6. 由js文件中引入另外的js文件想到的

    1. html中,使用<script src="../static/js/xxx.js"></script>引入js文件.   2. 在js文件中,引入js ...

  7. lunix salt 用法

    红蜘蛛软件 c/s client  : 学生端是客户端 ,装了红蜘蛛客户端-学生端 server端: 教师机  ,装了红蜘蛛软件-教师端  教师机,只能管理,  教师机和学生机,相互通信,相互知道的情 ...

  8. JAVA使用Tess4J进行ocr识别

    Tess4J是对Tesseract OCR API.的Java JNA 封装.使java能够通过调用Tess4J的API来使用Tesseract OCR.支持的格式:TIFF,JPEG,GIF,PNG ...

  9. ES6数组的新增功能,还是很强大的好多地方用的到

    map,reduce,filter ,forEach 废话不多说代码走起 map 映射   就是一个对一个  /* 比如:学生成绩分数对应及格不及格 也可以做一些算数运算 */ let chengji ...

  10. EasyuiDatagird绑定分页.NetMVC

    引入EasyUi所有需要的脚本,样式 <link href="/easyui/themes/default/easyui.css" rel="stylesheet& ...