python在txt指定行添加文本(Python修改文件往指定行插入内容的实例)
类别:脚本大全 浏览量:515
时间:2022-04-02 10:22:14 python在txt指定行添加文本
Python修改文件往指定行插入内容的实例需求:批量修改py文件中的类属性,为类增加一个core = True新的属性
原py文件如下
a.py
|
class A(): description = "abc" |
现在有一个1.txt文本,内容如下,如果有py文件中的description跟txt文本中的一样,则增加core属性
1.txt
|
description = "abc" description = "123" |
实现思路:
1.需要遍历code目录下的所有py文件,然后读取所有行数内容保存到lines列表中
2.遍历每个文件的每一行,匹配1.txt中的description,如果匹配中,就返回行号
3.往lines列表中根据行号插入要增加的新属性
4.重新写回原文件,达到修改文件的目的
如果修改成功后,效果应该是这样的
a.py
|
class A(): description = "abc" core = True |
实现代码:
|
import os original_folder = 'E:\\code\\' core_list = [] count = 0 # if the description is in the current line def isMatchDescription(line_buffer): global core_list # if not catch the core_list in global, reload it. if not core_list: with open ( "./core.txt" , "r" ) as f: core_list = f.readlines() # if match the core description for des in core_list: if line_buffer.strip() = = des.strip(): return True return False def modifySignatures(): for dirpath, dirnames, filenames in os.walk(original_folder): for filename in filenames: modifyFile(os.path.join(dirpath,filename)) def modifyFile(filename): global count #print "Current file: %s"% filename lines = [] with open (filename, "r" ) as f: lines = f.readlines() hit = 0 # Enume every single line for match the description for index, line in enumerate (lines): if isMatchDescription(line): hit = index print hit print "Matched file:%s" % filename count + = 1 if hit > 0 : lines.insert(hit - 1 , ' core = True\n' ) f.close() # Write back to file with open (filename, "w" ) as f: for line in lines: f.write(line) f.close() if __name__ = = '__main__' : modifySignatures() print "Modified:%d" % count |
代码中的lines.insert(hit-1,' core = True\n')这一行,hit代表目标py文件的description属性的行号,我之前用的是hit+1,但是后面发现有些文件出现了语法错误,原因是py文件中有些description的值太长,导致原文件使用了代码换行符\,如下:
a.py
|
class A(): description = "abc\ aaaaabbbbb" |
这样的如果修改后就变成了
|
class A(): description = "abc\ core = True aaaaabbbbb" |
为了避免这个bug,后面我才改成了hit-1
|
lines.insert(hit - 1 , ' core = True\n' ) |
这样修改的py文件后就是这样的效果
|
class A(): core = True description = "abc\ aaaaabbbbb" |
以上这篇Python修改文件往指定行插入内容的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/cssxn/article/details/81003146
您可能感兴趣
- python 微信发天气信息(python微信聊天机器人改进版定时或触发抓取天气预报、励志语录等,向好友推送)
- python爬虫爬取知乎(详解用python写网络爬虫-爬取新浪微博评论)
- pythonpandas数据类型(详解Python数据分析--Pandas知识点)
- python怎么安装queue(python队列Queue的详解)
- pythonselenium怎么设置元素(Python2 Selenium元素定位的实现8种)
- python自动处理图片(python制作图片缩略图)
- python3语法规则(Python3解释器知识点总结)
- pythonyield使用场景(Yii框架核心组件类实例详解)
- python排序方法简单(快速排序的四种python实现推荐)
- python开发的独立商城(python实现电子产品商店)
- pythonsocket建立多用户通讯(Python socket实现多对多全双工通信的方法)
- python爬虫怎么爬取vip资源(Python网络爬虫之爬取微博热搜)
- python3爬虫代码(Python3爬楼梯算法示例)
- python微信自动化(python微信撤回监测代码)
- python线程池怎么设置(python自定义线程池控制线程数量的示例)
- python切片的用法(Python进阶之全面解读高级特性之切片)
- 汉族(汉族的祖先是谁)
- 中国有几个名族(中国有几个民族没列入56个民族)
- 数学语文题目(语文的数学题)
- 香蕉(香蕉三种人不宜吃)
- 没钱可以快乐吗(没钱也能快乐吗)
- 快乐是什么(快乐就是)
热门推荐
- showModalDialog在谷歌浏览器下获取不到返回值
- laravel判断变量为空(关于laravel 数据库迁移中integer类型是无法指定长度的问题)
- css透明输入框(纯CSS实现气泡对话框尖角处理方案)
- python 导入指定文件夹的模块(Python实现的在特定目录下导入模块功能分析)
- Json序列化对象的部分属性值
- python怎么取出列表(Python 利用切片从列表中取出一部分使用的方法)
- html5的canvas图形绘制技术(导出HTML5 Canvas图片并上传服务器功能)
- dedecms标签插入时间(dedecms修改按tag标签显示全站相关内容的方法)
- dedecms频道封面不能修改内容(DEDECMS内容页分页过多、过长问题最佳解决方案)
- mysql行级锁使用教程(浅析MySQL的lru链表)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9