python文件特定行插入和替换实例详解
作者:ryanstd 时间:2022-05-01 11:16:27
python文件特定行插入和替换实例详解
python提供了read,write,但和很多语言类似似乎没有提供insert。当然真要提供的话,肯定是可以实现的,但可能引入insert会带来很多其他问题,比如在插入过程中crash掉可能会导致后面的内容没来得及写回。
不过用fileinput可以简单实现在特定行插入的需求:
Python代码
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。
来源:http://ryanstd.iteye.com/blog/480781
标签:python,文件插入,替换
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python super()方法原理详解
2023-06-19 18:28:30
Python中的Selenium异常处理
2021-08-28 04:15:23
![](https://img.aspxhome.com/file/2023/4/72264_0s.png)
SQLServer与服务器连接时出错的解决方案
2009-06-28 14:35:00
如何使用python3获取当前路径及os.path.dirname的使用
2023-07-22 06:29:37
Python中的装饰器用法详解
2022-02-09 04:03:33
另外一种斜体的导航条
2008-11-05 12:24:00
Python爬虫抓取技术的一些经验
2021-06-09 12:02:23
![](https://img.aspxhome.com/file/2023/0/76760_0s.jpg)
基于python实现matlab filter函数过程详解
2023-06-04 04:54:55
PHP中定义数组常量(array常量)的方法
2023-11-23 06:16:59
网页设计详细教程之XML简便省力技巧五则
2008-05-23 14:37:00
Python协程的用法和例子详解
2022-02-15 14:01:57
![](https://img.aspxhome.com/file/2023/4/90894_0s.jpg)
OpenCV实现去除背景识别的方法总结
2021-01-06 23:04:10
![](https://img.aspxhome.com/file/2023/0/83880_0s.jpg)
ASP:使用ImageMagickObject组件制作缩略图
2008-10-21 12:21:00
解析:轻松了解 MySQL中损坏的MyISAM表
2009-02-23 17:30:00
浅谈 Mousewheel 事件
2010-08-16 12:37:00
Python标准库之Math,Random模块使用详解
2021-02-09 22:33:13
全文译稿 Windows Internet Explorer 8 性能优化白皮书
2010-04-23 20:13:00
Python变量、数据类型、数据类型转换相关函数用法实例详解
2021-03-29 08:30:35
![](https://img.aspxhome.com/file/2023/3/65443_0s.png)
如何使用django的MTV开发模式返回一个网页
2023-07-04 21:47:06
![](https://img.aspxhome.com/file/2023/9/75139_0s.jpg)
Python实现基于POS算法的区块链
2023-10-30 01:47:19
![](https://img.aspxhome.com/file/2023/1/67291_0s.png)