python修改文件内容_Python之文件内容修改

本文将介绍在python中在不改变原文件其它内容的条件下,插入或删除内容。

我们想要达到的效果是:在文件的任意行或位置插入或删除内容,不影响该位置前后的内容。

分为以下四种情况:

1. 替换某一行或者删除某行内容。

2. 在指定行后添加一行内容。

3. 替换文章中的某一内容(字符串)。

4. 删除文件中的某一关键词。

这里我们建议使用fileinput模块。首先简单介绍下这一模块:

fileinput模块可以对一个或者多个文件中的内容进行迭代,遍历等操作。使用这一模块可以方便的对文件进行遍历,格式化输出,查找,替换等操作。

基本用法是:

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

files:                  #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]不同文件用逗号隔开。

inplace:                #是否将标准输出的结果写回文件,默认不取代。如果设置为True则将操作结果就地写到原文件中。

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

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

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

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

模块内置函数:

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

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

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

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

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

fileinput.isstdin()      #判断最后一行是否从stdin中读取 。

fileinput.close()        #关闭队列 。

下面依次介绍各种情况的操作:

1. 替换某一行或者删除某行内容:# Author:Allen Liu

# Data: 08/01/2017

'''

This program is an example of file modification use fileinput module

'''

import fileinput

for line in fileinput.input('data', backup='.bak',inplace = True):

# 删除含有某一关键词的行

if 'Beijing' in line:

pass

else:

print(line.rstrip())

# 替换掉还有某一关键词的行

print(line.rstrip().replace('Beijing!','Jinan!')

2. 在某一行后添加一行# Author:Allen Liu

# Data: 07/27/2017

'''

This program is an example of file modification use fileinput module

'''

import fileinput

for line in fileinput.input('data', backup='.bak',inplace = True):

# 在指定行后添加一行

if fileinput.lineno() == 1:

print(line.rstrip())

print('Hello world!')

else:

print(line.rstrip())

3. 替换文件中的某一关键词import fileinput

for line in fileinput.input('data', backup='.bak',inplace = True):

print(line.rstrip().replace('world!', 'China!'))

4. 删除文件中的某一关键词import fileinput

for line in fileinput.input('data', backup='.bak',inplace = True):

print(line.rstrip().replace('China',''))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值