Python Fileinput 模块介绍
作者博文地址: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 模块介绍的更多相关文章
- Python fileinput模块详解
Python的fileinput模块可以快速对一个或多个文件进行循环遍历. import fileinput for line in fileinput.input(): process(line) ...
- Python Fileinput 模块
作者博文地址:http://www.cnblogs.com/liu-shuai/ fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行. [默 ...
- Python之模块介绍
模块介绍 模块,是用一些代码实现的某个功能的代码集合. 类似与函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用,提供了代码的重用性和代码间的耦合.对于一个复杂的功能,可能需要多个函 ...
- python multiprocessing模块 介绍
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进 ...
- Python day18模块介绍2(使用BASE_DIR修改临时path,os模块)
1.BASE_DIR修改path(别人导入py项目时不会因为绝对路径无法解释) #sys修改环境变量 #使用BASE_DIR将绝对路径改为相对路径 import sys,os BASE_DIR=os. ...
- Python log 模块介绍
刚用Python log模块写了一个例子,记录一下. import logging import logging.handlers import os from datetime import dat ...
- Python—time模块介绍
time 模块 在平常的代码中,我们常常需要与时间打交道.在Python中,常用的与时间处理有关的模块就包括:time,datetime,下面来介绍time模块. 在开始之前,首先要说明几点: 一.在 ...
- python常用模块介绍
关于if __name__ == "__main__": 若执行文件为bin,调用文件为cal: 若在执行文件bin中执行print(__name__) 输出:__main__ 当 ...
- Python os模块介绍
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curd ...
随机推荐
- eclipse中svn插件装好后出现"位置错误"的处理
错误现象: 验证位置时发生错误:"org.apache.subversion.javahl.ClientException:svn:E210004: Number is larger tha ...
- Oracle ddl 和 dml 操作
ddl 操作 窗口设置用户权限的方法 Oracle的数据类型 按住Ctrl点击表名 ,可以鼠标操作 插入的数据需要满足创建表的检查 主表clazz删除数据从表设置级联也会一同删除 有约束也 ...
- oracle入门(二)
### 一,视图 ```1. 什么是视图 视图是一张虚表, 可以把视图看成表使用(增删改查),视图中没有数据,所有的数据都在基本表中(tables) 封装了一个复杂的DQL 操作视图 ...
- 【MySQL】基本语句
##mac启动mysql的命令语句## /usr/local/mysql/bin/mysql -u root -p ##然后输入密码 查看当前存在数据库 show databases; 创建数据库 c ...
- php网易云信im即时通讯和聊天室
话不多说 直接上代码 <?php/** * Created by PhpStorm. * User: lhl * Date: 2019/4/10 * Time: 17:38 */ namespa ...
- [笔记] FireDAC DataSet 导入及导出 JSON
刚好需要将 FireDAC DataSet (TFDDataSet, TFDQuery...) 转成 JSON,网上找了一圈,原来从 XE6 开始就支持这个功能了: 储存: DataSet1.Save ...
- 2.Hadoop集群安装进阶
Hadoop进阶 1.配置SSH免密 (1)修改slaves文件 切换到master机器,本节操作全在master进行. 进入/usr/hadoop/etc/hadoop目录下,找到slaves文件, ...
- centos验证码图片无法加载的问题
首先确认是否安装imagemagick 更改此文件 $ vim /etc/ImageMagick/policy.xml 找到此行 <policy domain="coder&qu ...
- Python学习:16.Python面对对象(三、反射,构造方法,静态字段,静态方法)
一.构造方法 在使用类创建对象的时候(就是类后面加括号)就自动执行__init__方法. class A: def __init__(self): print('A') class B: def __ ...
- ruby安装devkit
双击下载文件,指定解压路径,路径中不能有空格.如C:\DevKit,这个路径就是<DEVKIT_INSTALL_DIR>. > cd <DEVKIT_INSTALL_DIR&g ...