Python修改文件往指定行插入内容的实例


Posted in Python onJanuary 30, 2019

需求:批量修改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修改文件往指定行插入内容的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python科学计算环境推荐——Anaconda
Jun 30 Python
跟老齐学Python之传说中的函数编写条规
Oct 11 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
python中partial()基础用法说明
Dec 30 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 Python
python学生管理系统
Jan 30 #Python
selenium+python截图不成功的解决方法
Jan 30 #Python
python列表使用实现名字管理系统
Jan 30 #Python
Python基本socket通信控制操作示例
Jan 30 #Python
Python mutiprocessing多线程池pool操作示例
Jan 30 #Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 #Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 #Python
You might like
php _autoload自动加载类与机制分析
2012/02/10 PHP
php可变长参数处理函数详解
2017/02/22 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
matplotlib作图添加表格实例代码
2018/01/23 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python 处理图片像素点的实例
2019/01/08 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
pandas 时间格式转换的实现
2019/07/06 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
酒店副总经理岗位职责范本
2014/02/04 职场文书
大学生个人求职信例文
2014/07/07 职场文书
社会实践活动总结
2015/02/05 职场文书
2015年教务工作总结
2015/05/23 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby
win10清理dns缓存
2022/04/19 数码科技