作者博文地址:http://www.cnblogs.com/spiritman/

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

【默认格式】

  fileinput.input (files='filename', 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() #关闭队列

【使用实例】

1、使用fileinput查看文件所有行
1 #cat user.txt
Jack
Rain
Tom
Suse
####################################################
#cat f_replace.py
#!/usr/bin/env python
import fileinput
for line in fileinput.input('user.txt'):
print line,
####################################################
13 #执行代码
#python f_replace.py
#输出结果
Jack
Rain
Tom
Suse
2、使用fileinput修改文件并备份原文件
1 #ls ./
2 user.txt
3 #cat user.txt
Jack
Rain
Tom
Suse
####################################################
#cat f_replace.py
#!/usr/bin/env python
11 import fileinput
for line in fileinput.input('user.txt',backup='.bak',inplace=1):
line = line.replace('Rain','Jerry')
print line,
####################################################
#执行代码
17 #python f_replace.py
#输出结果
19 #ls ./
20 user.txt user.txt.bak
21 #cat user.txt
Jack
Jerry
Tom
Suse
4、使用fileinput输出当前行号和行内容 
1 #cat user.txt
Jack
Rain
Tom
Suse
####################################################
#cat f_replace.py
#!/usr/bin/env python
import fileinput
for line in fileinput.input('user.txt'):
lineno = fileinput.lineno()
print lineno,line,
####################################################
#执行代码
#python f_replace.py
#输出结果
1 Jack
2 Rain
3 Tom
4 Suse
5、使用fileinput判断是否为第一行
1 #cat user.txt
Jack
Rain
Tom
Suse
####################################################
#cat f_replace.py
#!/usr/bin/env python
import fileinput
for line in fileinput.input('user.txt'):
if fileinput.isfirstline():
print line,
break
####################################################
#执行代码
#python f_replace.py
#输出结果
Jack
6、使用fileinput过滤系统文件message
1 #!/user/bin/env python
#coding=UTF8 import os
import fileinput
import re
from sys import exit
logfiles = os.listdir("/var/log/")
pattern="messages-*\d*"
msgfiles=[]
for log in logfiles:
if re.match(pattern,log):
print log
msgfiles.append("/var/log/"+log)
print(msgfiles)
while True:
find_str = raw_input("please input search key word:")
find_str = find_str.strip()
print(find_str)
if find_str =='':
continue
elif find_str.lower() =="q" or find_str.lower() =="quit":
print('bye bye!')
exit(0)
else:
for line in fileinput.input(msgfiles):
if find_str in line:
print("filename:%s \nfileline:%s\ncontent:%s" %(fileinput.filename(),fileinput.filelineno(),line))

作者博文地址:http://www.cnblogs.com/spiritman/

Python Fileinput 模块介绍的更多相关文章

  1. Python fileinput模块详解

    Python的fileinput模块可以快速对一个或多个文件进行循环遍历. import fileinput for line in fileinput.input(): process(line) ...

  2. Python Fileinput 模块

    作者博文地址:http://www.cnblogs.com/liu-shuai/ fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行. [默 ...

  3. Python之模块介绍

    模块介绍 模块,是用一些代码实现的某个功能的代码集合. 类似与函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用,提供了代码的重用性和代码间的耦合.对于一个复杂的功能,可能需要多个函 ...

  4. python multiprocessing模块 介绍

    一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进 ...

  5. Python day18模块介绍2(使用BASE_DIR修改临时path,os模块)

    1.BASE_DIR修改path(别人导入py项目时不会因为绝对路径无法解释) #sys修改环境变量 #使用BASE_DIR将绝对路径改为相对路径 import sys,os BASE_DIR=os. ...

  6. Python log 模块介绍

    刚用Python log模块写了一个例子,记录一下. import logging import logging.handlers import os from datetime import dat ...

  7. Python—time模块介绍

    time 模块 在平常的代码中,我们常常需要与时间打交道.在Python中,常用的与时间处理有关的模块就包括:time,datetime,下面来介绍time模块. 在开始之前,首先要说明几点: 一.在 ...

  8. python常用模块介绍

    关于if __name__ == "__main__": 若执行文件为bin,调用文件为cal: 若在执行文件bin中执行print(__name__) 输出:__main__ 当 ...

  9. Python os模块介绍

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curd ...

随机推荐

  1. eclipse中svn插件装好后出现"位置错误"的处理

    错误现象: 验证位置时发生错误:"org.apache.subversion.javahl.ClientException:svn:E210004: Number is larger tha ...

  2. Oracle ddl 和 dml 操作

      ddl 操作 窗口设置用户权限的方法  Oracle的数据类型  按住Ctrl点击表名 ,可以鼠标操作  插入的数据需要满足创建表的检查  主表clazz删除数据从表设置级联也会一同删除 有约束也 ...

  3. oracle入门(二)

    ### 一,视图 ```1. 什么是视图    视图是一张虚表, 可以把视图看成表使用(增删改查),视图中没有数据,所有的数据都在基本表中(tables)    封装了一个复杂的DQL    操作视图 ...

  4. 【MySQL】基本语句

    ##mac启动mysql的命令语句## /usr/local/mysql/bin/mysql -u root -p ##然后输入密码 查看当前存在数据库 show databases; 创建数据库 c ...

  5. php网易云信im即时通讯和聊天室

    话不多说 直接上代码 <?php/** * Created by PhpStorm. * User: lhl * Date: 2019/4/10 * Time: 17:38 */ namespa ...

  6. [笔记] FireDAC DataSet 导入及导出 JSON

    刚好需要将 FireDAC DataSet (TFDDataSet, TFDQuery...) 转成 JSON,网上找了一圈,原来从 XE6 开始就支持这个功能了: 储存: DataSet1.Save ...

  7. 2.Hadoop集群安装进阶

    Hadoop进阶 1.配置SSH免密 (1)修改slaves文件 切换到master机器,本节操作全在master进行. 进入/usr/hadoop/etc/hadoop目录下,找到slaves文件, ...

  8. centos验证码图片无法加载的问题

    首先确认是否安装imagemagick 更改此文件 $ vim /etc/ImageMagick/policy.xml   找到此行  <policy domain="coder&qu ...

  9. Python学习:16.Python面对对象(三、反射,构造方法,静态字段,静态方法)

    一.构造方法 在使用类创建对象的时候(就是类后面加括号)就自动执行__init__方法. class A: def __init__(self): print('A') class B: def __ ...

  10. ruby安装devkit

    双击下载文件,指定解压路径,路径中不能有空格.如C:\DevKit,这个路径就是<DEVKIT_INSTALL_DIR>. > cd <DEVKIT_INSTALL_DIR&g ...