前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python fileinput_Python之fileinput模块学习「建议收藏」

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

作者头像
全栈程序员站长
发布2022-08-28 13:44:07
4900
发布2022-08-28 13:44:07
举报

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

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.cn/146020.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档