python fileinput_Python之fileinput模块学习「建议收藏」

python fileinput_Python之fileinput模块学习「建议收藏」fileinput模块fileinput.input([files[,inplace[,backup[,bufsize[,mode[,openhook]]]]]])files:#文件的路径列表,默认是stdin方式,多文件[‘1.txt’,’2.txt’,…]inplace:#是否将标准输出的结果写回文件,默认不取代…

大家好,又见面了,我是你们的朋友全栈君。

fileinput模块

fileinput.input([files[, inplace[, backup[, bufsize[, mode[, openhook]]]]]])

files:                  #文件的路径列表,默认是stdin方式,多文件[‘1.txt’,’2.txt’,…]

inplace:                #是否将标准输出的结果写回文件,默认不取代

backup:                 #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。

bufsize:                #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可

mode:                   #读写模式,默认为只读

openhook:               #该钩子用于控制打开的所有文件,比如说编码方式等;

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

它的工作方式和readlines很类似,不同点在于它不是将全部的行读到列表中而是创建了一个xreadlines对象。

关键在这句话:标准输出会被重定向到打开文件

所以一定要用print打印到标准输出,fileinput会自动把标准输出内容回写到文件,如果没有用print打印到标准输出,那么就会把空内容回写到文件,也就是清除了文件所有内容

print re_basedir.sub(‘basedir=/usr/local/mysql’, line) ,

下面是fileinput模块中的常用函数:

input()    #返回能够用于for循环遍历的对象

filename()  #返回当前文件的名称

lineno()   #返回当前已经读取的行的数量(或者序号)

filelineno() #返回当前读取的行的行号

isfirstline() #检查当前行是否是文件的第一行

示例

#如果要修改多个地方,将sub()得到的结果代入第二个sub()函数再print出来

def modify_startupscript(port):

for line in fileinput.input(MYSQL_STARTUP_SCRIPT,inplace=1):

re_datadir = re.compile(r’datadir=’, re.I | re.M)

content= re_datadir.sub(‘datadir=/data/mysql/mysql%s/data’ %port, line)

re_basedir = re.compile(r’basedir=’, re.I | re.M)

print re_basedir.sub(‘basedir=/usr/local/mysql’, content) ,

fileinput.close()

示例#!/usr/bin/env python

import fileinput

for line in fileinput.input(‘test.txt’,backup=’.bak’,inplace=1):

print line.replace(‘Python’,’LinuxEye’),

fileinput.close()

示例

判断是否是第一行import fileinput

for line in fileinput.input(‘test.txt’):

if fileinput.isfirstline():

print line,

else:

break

fileinput.close()

示例import fileinput

from glob import glob

for line in fileinput.input(glob(r’d:/*.txt’)):

print fileinput.lineno(), u’文件:’, fileinput.filename(), /

u’行号:’, fileinput.filelineno(), u’长度:’, len(line.strip(‘/n’))

fileinput.close()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146020.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 七牛云文件上传_七牛云价格

    七牛云文件上传_七牛云价格七牛云上传图片到七牛云并返回图片URL鸣谢’追逐盛夏流年’:https://blog.csdn.net/j1231230/article/details/80061834在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处我们采用七牛云进行图片存储。一.七…

  • 宽字节注入详解_pba商业分析师含金量

    宽字节注入详解_pba商业分析师含金量尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范。但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如gbk,作为自己默认的编码类型。也有一些cms为了考虑老用户,所以出了gbk和utf-8两个版本。我们就以gbk字符编码为示范,拉开帷幕。gbk是一种多字符编码,具体定义自行百度。但有一个地方尤其要…

    2022年10月15日
  • 图标变成了一张白纸_win10桌面图标变白纸

    图标变成了一张白纸_win10桌面图标变白纸win+R输入ie4uinit-show

    2022年10月19日
  • smtp搭建_smtp服务器指的是什么服务器

    smtp搭建_smtp服务器指的是什么服务器应用目标:更稳定地发送邮件实现难度:★★☆☆☆我们在发送电子邮件的时候,这封E-mail首先来到ISP提供的邮件服务器,再通过它发送出去。但如果ISP因为网络出现一些问题,则可能会耽搁邮件的发送,甚至可能会造成邮件丢失。如果用自己的机器做SMTP服务器来发邮件,那肯定不会出现上述情况啦!怎么样,心动了吧?下面咱们就一起来架设一个属于自己的SMTP服务器,让你的E-mail发送更安全。一、SMTP服…

  • vs2008安装失败解决办法「建议收藏」

    vs2008安装失败解决办法「建议收藏」

    由于各种蛋疼原因,卸载了VS2010换08.比较痛恨的是VS的卸载总是卸不干净,这种问题对于微软来说很难吗??
    开始还以为装不上08是因为2010没有卸载干净,结果搜索后发现时office2007的问题。
    代码:[01/13/10,18:55:42] setup.exe: [2] ISetupComponent::Pre/Post/Install() failed in ISetupManager::InternalInstallManager() with H

  • libsvm工具箱C++编程实践2

    libsvm工具箱C++编程实践2

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号