python fileinput 模块

典型用法:

import fileinput
for line in fileinput.input():
    process(line)

input 参数为空时,获取sys.argv[1:] 作为参数。如果文件名是“-”也是从标准输入获取参数。

input参数可以是一个List,也可以是一个文件名。

函数:

    fileiineno() 返回在文件中所占的行数。

    filename() 返回当前所读文件名


    input(files=None, inplace=0, backup='', bufsize=0, mode='r', openhook=None)
    input([files[, inplace[, backup[, mode[, openhook]]]]])

         files: 文件名字或者文件名列表 inplace:是否替换源文件,backup:备份源文件,文件名用什么结尾。

    isfirstline() 是否是文件的第一行

    isstdin() 返回是否从标注输入读取的

     lineno() 返回一共读取的行数

    nextfile() 关闭当前行,打开下一文件

举例:

  1. 文件替代:此时对文件中的内容不真实替代,跟sed 不加-i,并且在屏幕上会打印出来
import fileinput
for line in fileinput.input("/etc/selinux/config"):
    line = line.replace("SELINUX=enforcing","SELINUX=disabled")
    print line
加上参数inplace=1则会直接操作文件,并且原文件每行还会插入一行空行,在屏幕并输出。如果inplace=0则跟上面的效果一样
import fileinput
for line in fileinput.input("config",inplace=1):
    line = line.replace("SELINUX=enforcing","SELINUX=disabled")
    print line
修改文件之前,先备份一份,备份的文件名为config.bak
import fileinput
for line in fileinput.input("config",inplace=1,backup='.bak'):
    line = line.replace("SELINUX=enforcing","SELINUX=disabled")
    print line,
去掉上面的空行,在line后面加逗号。 查找过滤系统messages文件
#!/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)) 


转载于:https://my.oschina.net/zhailibao2010/blog/290023

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值