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()

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单有趣的小游戏(生活中简单有趣的事)

    来源:https://github.com/aerojunkie/control-tools/blob/master/ufo_rotate.m一个简单的LQR例子closeall%InitialConditionsx0=[3;%3radians0];%0rad/s%SystemDynamicsA=[01;0.010];B=[0;1];C=[10];D=0;%ControlLaw

    2022年4月16日
    48
  • c语言数组合并「建议收藏」

    c语言数组合并「建议收藏」c语言数组合并;注意,在函数中计算数组的长度可能会出错,尽量调用数组长度值#include<stdio.h>#include<stdlib.h>voidmergelist(int*a,intlen_a,int*b,intlen_b,int*c);//两个数组合并voidmergelist(int*a,intlen_a,int*b,int…

    2025年6月14日
    3
  • 网页中使用opencv 人脸识别[通俗易懂]

    网页中使用opencv 人脸识别[通俗易懂]一.准备1.编译出opencv.js文件opencv.js没有现成的,需要编译,根据官网下载编译程序编译https://blog.csdn.net/zbl744949461/article/details/100150138如果不想自己编译,或者编译完的文件,在浏览器中有问题,可以直接从官网网站上自己下下来(F12,把js文件保存在本地)https:/…

    2022年5月26日
    35
  • pycharm2021.4.2激活码(破解版激活)

    pycharm2021.4.2激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    76
  • TortoiseSVN新人使用指南[通俗易懂]

    TortoiseSVN新人使用指南[通俗易懂]这篇文章源于6月份给公司新人作的关于SVN使用的培训,转眼已经过了几个月的时间,丢了也怪可惜的,于是整理出来希望能够帮助后来人快速入门。安装说明使用说明检出项目导入项目提交更新查看日志版本回滚版本控制总结安装说明开发人员强烈建议使用IDE中的SVN插件更加智能与人性化。首先安装SVN客户端,windows一般选择乌龟客户端https://tortoisesvn.net/d

    2022年5月3日
    47
  • HandlerSocket_handler的使用

    HandlerSocket_handler的使用HandlerSocket的原理http://www.mysqlops.com/2011/10/19/handlersocket-principle.htmlHandlerSocket的性能测试http://www.mysqlops.com/2011/10/20/handlersocket-perf.htmlHandlerSock

    2022年8月24日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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