`
ryanstd
  • 浏览: 15571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

python文件特定行插入、替换

    博客分类:
  • Byte
阅读更多

python提供了read,write,但和很多语言类似似乎没有提供insert。当然真要提供的话,肯定是可以实现的,但可能引入insert会带来很多其他问题,比如在插入过程中crash掉可能会导致后面的内容没来得及写回。

不过用fileinput可以简单实现在特定行插入的需求:

import os
import fileinput
def file_insert(fname,linenos=[],strings=[]):
    """
    Insert several strings to lines with linenos repectively.

    The elements in linenos must be in increasing order and len(strings)
    must be equal to or less than len(linenos).

    The extra lines ( if len(linenos)> len(strings)) will be inserted
    with blank line.
    """
    if os.path.exists(fname):
        lineno = 0
        i = 0
        for line in fileinput.input(fname,inplace=1):
            # inplace must be set to 1
            # it will redirect stdout to the input file
            lineno += 1
            line = line.strip()
            if i<len(linenos) and linenos[i]==lineno:
                if i>=len(strings):
                    print "\n",line
                else:
                    print strings[i]
                    print line
                i += 1
            else:
                print line
file_insert('a.txt',[1,4,5],['insert1','insert4'])

 其中需要注意的是 fileinput.input的inplace必须要设为1,以便让stdout被重定向到输入文件里。

当然用fileinput.input可以不仅用来在某行插入,还可以在特定模式的行(比如以salary:结尾的行)插入或替换,实现一个小型的sed。

 

1
0
分享到:
评论

相关推荐

    python文件特定行插入和替换实例详解

    主要介绍了python文件特定行插入和替换实例详解的相关资料,需要的朋友可以参考下

    Python替换不了word中的文字?.zip

    然而,对于一些特定的任务,如在Microsoft Word文档中替换文字,Python可能需要额外的库来支持。这是因为Python标准库并不直接支持对Word文档的操作。但是,通过使用python-docx库,我们可以实现这个功能。python-...

    基于Python实现的Word助手的程序

    基于Python实现的Word助手程序是一个功能强大的...自动化任务:程序支持自动化任务设置,用户可以根据需要设置定时任务或触发条件,让程序在特定时间或满足特定条件时自动执行一系列操作,如自动保存文档、发送邮件等。

    免费开源代码编辑器 CudaText 1.117.0 中文多语免费版.zip

    它可以通过 Python 插件(插件,lint,代码树解析器,外部工具)进行扩展。语法解析器功能丰富,基于 EControl 引擎(尽管不如某些竞争对手快)。 免费开源代码编辑器 CudaText 中文版免费开源代码编辑器 CudaText ...

    EditMinus 0.4 build 20080112

    editminus最初是出于仿EditPlus编辑软件的国产程序员编辑器,它拥有类似EditPlus的功能,多语言代码的语法高亮显示,无限制的 Undo/Redo功能,代码折叠,代码美化功能,正规表达式的查找/替换功能,更加快捷的大文件打开...

    正则表达式经典实例.pdf

    中文名: 正则表达式经典实例 原名: Regular Expression Cookbook 作者: (美)高瓦特斯...8.10 替换在CSV文件中使用的分隔符 8.11 抽取某个特定列中的CSV域 8.12 匹配INI段头 8.13 匹配INI段块 8.14 匹配INI名称-值对

    正则表达式经典实例

    中文名: 正则表达式经典实例 原名: Regular Expression Cookbook ...8.10 替换在CSV文件中使用的分隔符 8.11 抽取某个特定列中的CSV域 8.12 匹配INI段头 8.13 匹配INI段块 8.14 匹配INI名称-值对

    lite-plugins

    适用于插件 注意:如果您提出拉取请求,则应更新表并按字母... 用命令视图替换系统关闭确认对话框,例如单个文件( ) 在颜色值(例如#ff00ff或rgb(255, 0, 255) #ff00ff rgb(255, 0, 255) )上加上其结果颜色。

    SimpleOrderbook:C ++(11)金融市场订单和带有Python扩展模块的匹配引擎

    SimpleOrderbook是C ++(11)金融市场订单和具有Python扩展模块的匹配引擎。 特征 标准订单类型 市场 限制 停止市场 止损 高级订单/条件: 单项取消(OCO) 一触即发(OTO) 填空或杀人(FOK) 括号 追踪止损 ...

    docker-glue:自动化的无人值守可插拔Docker管理

    根据docker事件运行特定的处理程序代码(python插件)或处理程序脚本将容器检查发布到发现服务(例如etcd )守护进程docker-glue可运行处理程序和脚本的模块化可插入守护程序haproxy docker-balancer一个独立的守护...

    PyMavenRunner:基于Qt5的UI运行Maven

    PyMavenRunner ...用用户可以看到的内容替换自定义模式中的制表符。 \t或Unicode [tab]符号。 添加上下文菜单以插入此字符。 搜索日志输出。 理想情况下,隐藏距离搜索模式太远的所有行。 如果用户界面无

    Learn_Noisy_Labels_Medical_Images:[NeurIPS 2020]在医学图像分割中将人为错误与地面真相区分开来

    是Python代码的主要开发人员。 是数据模拟代码的主要开发者。如何使用我们的代码进行进一步研究我们建议尝试使用的toy-example来了解管道,这是MNIST的简化主要功能,类似于 , , 和其他主要功能。 如果您想将我们...

    mitmproxy-mock:使用mitmproxy轻松模拟服务器响应的工具

    支持单步,多阶段,状态机,循环和随机选择的动作匹配来自真实后端的特定响应并修改其内容(例如,将新数据插入现有响应中) 记录特定请求或响应的出现引入随机错误以模拟不可靠的条件安装通过pip或Homebrew安装...

    电子书:MongoDB权威指南(中文版)

    192.6.5 内嵌文档 192.6.6 _id 和ObjectId 20第3 章 创建、更新及删除文档 233.1 插入并保存文档 233.1.1 批量插入 233.1.2 插入:原理和作用 243.2 删除文档 243.3 更新文档 253.3.1 文档替换 ...

    MySQL中文参考手册

    + 4.15.4 选项文件 o 4.16 升级和降级(downgrading)时有什么特别要做的事情吗? + 4.16.1 从一个 3.22 版本升级到 3.23 + 4.16.2 从一个 3.21 版本升级到 3.22 + 4.16.3 从一个 3.20 版本升级到 3.21 + ...

    MongoDB权威指南(中文版)高清

    152.6.1 基本数据类型 152.6.2 数字 172.6.3 日期 182.6.4 数组 192.6.5 内嵌文档 192.6.6 _id和ObjectId 20第3章 创建、更新及删除文档 233.1 插入并保存文档 233.1.1 批量插入 233.1.2 插入:...

    django-improved-inlines:django 的内联对象渲染,基于 django-basic-apps + 过滤器 + 模板

    Django 改进的内联是来自的内联应用程序的一个版本,它具有一些我需要的特定功能: filter="" 而不仅仅是 ids= 和 id= template="" 而不是内联/&lt;app&gt;_&lt;model&gt;.html 通过在类型、ID、ID、过滤器前添加“data-...

    免费开源思维导图 Freeplane 1.9.1 中文多语免费版.zip

    FreePlane 在 FreeMind 基础上,增强了如下功能:更好的节点文字即席编辑、优化连接线、插入外部对象、脚本优化、全部文件替换、功能键工具栏、按住 control 和左键点击菜单项可修改热键、全屏模式、选择性粘贴、...

    struts in Action

    1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................

Global site tag (gtag.js) - Google Analytics