文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python之文件内容修改

2023-01-31 05:52

关注

本文将介绍在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',''))






阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯