作者博文地址:http://www.cnblogs.com/liu-shuai/

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

【默认格式】

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

1 files:         #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]
2 inplace: #是否将标准输出的结果写回文件,默认不取代
3 backup: #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。
4 bufsize: #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可
5 mode:      #读写模式,默认为只读
6 openhook:    #该钩子用于控制打开的所有文件,比如说编码方式等;

【常用函数】

1 fileinput.input()       #返回能够用于for循环遍历的对象
2 fileinput.filename() #返回当前文件的名称
3 fileinput.lineno() #返回当前已经读取的行的数量(或者序号)
4 fileinput.filelineno() #返回当前读取的行的行号
5 fileinput.isfirstline() #检查当前行是否是文件的第一行
6 fileinput.isstdin() #判断最后一行是否从stdin中读取
7 fileinput.close() #关闭队列

【使用实例】

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

Python Fileinput 模块的更多相关文章

  1. Python Fileinput 模块介绍

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

  2. Python fileinput模块详解

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

  3. Python基础【第十一篇】文件操作(file()、open()方法和fileinput模块)

    一.file/open 内置函数 file函数的方法: 注:file 和 open的用法和功能相同这里只对file进行分析 file(‘filename’,’mode’) file(‘filename ...

  4. Python中fileinput模块使用

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

  5. Python第二十一天 fileinput模块

    Python第二十一天    fileinput模块 fileinput模块 fileinput.input([files[, inplace[, backup[, bufsize[, mode[, ...

  6. 洗礼灵魂,修炼python(19)--文件I/O操作,linecache,fileinput模块

    文件I/O操作 1.什么是文件I/O操作 首先I/O(input/output),即输入/输出端口,然后文件,大家应该都是是什么,一个数据,一个txt或者html文档就是一个文件.文件操作就是对文件进 ...

  7. Python中fileinput模块使用方法

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

  8. python标准库介绍——15 fileinput 模块详解

    ``fileinput`` 模块允许你循环一个或多个文本文件的内容, 如 [Example 2-1 #eg-2-1] 所示. ====Example 2-1. 使用 fileinput 模块循环一个文 ...

  9. fileinput模块

    刚才练习的时候,报如下错误: AttributeError: module 'fileinput' has no attribute 'input',后来Google参考这篇文章https://mai ...

随机推荐

  1. 用JS实现省市二级联动

    一.需求分析 我们希望在注册页面中添加一个字段(籍贯),当用户选择一个具体的省份,在后面的下拉列表中动态加载该省份下所有的城市.显示的效果如下: 二.技术分析 使用事件(onchange) 使用一个二 ...

  2. React学习笔记4

    遇到的问题 目前模板是自己任意定义的,样式不好控制 在组件设计时,可以把页面数据显示的地方,分割父子组件嵌套的结构,比如,商品数据显示列表,把组外层容器看成是父组件,里面是数据显示的渲染模板,看成是子 ...

  3. DataSet取值并保存在List集合中

    DBHelper db = new DBHelper(); //实例化DB类 string sql = "select * from student"; //虚构的sql语句 Da ...

  4. $(this)在ajax里面不生效的探究

    第一个箭头时, 如果没有将$(this) 赋值给 _this ,那么$(this)就无法在ajax方法里面使用. 应该是应为他们属于不同的域. 赋值给_this的话, 就类似于全局变量

  5. C# Winform Cef 闪屏

    C# Winform Cef 闪黑屏 CefSettings cs = new CefSettings(); cs.CefCommandLineArgs.Add(");//禁用GPU Cef ...

  6. Java 文件上传至leanCloud

    首先,在Controller端入参设置为 @RequestParam(value = "file",defaultValue = "") MultipartFi ...

  7. C#调用OCX控件的常用方法[转]

    小伙伴们在使用ICP提供的各种能力进行集成开发时常常会遇到一些技术上的困扰,例如ICP中很多接口是通过OCX控件的方式提供的,如何调用这些接口,就成了一个不大不小的问题,毕竟开发指南上可没这些内容啊~ ...

  8. nagios+influxdb+grafana的监控数据可视化流程

    nagios介绍 nagios是一款开源监控的应用,可用于监控本地和远程主机的日志.资源.死活等等诸多功能.通过snmp协议和nrpe协议. nagios的配置文件是由nconf上进行配置,然后点击生 ...

  9. Android学习笔记 ImageSwitcher图片切换组件的使用

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  10. 20165219第4次实验《Android程序设计》实验报告

    20165219第4次实验<Android程序设计>实验报告 一.实验内容及步骤 (一)Android Stuidio的安装Hello world测试 要求 参考http://www.cn ...