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判断操作系统类型代码分享
Nov 22 Python
使用Python生成XML的方法实例
Mar 21 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 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
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
解决DataFrame排序sort的问题
2018/06/07 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
python 调整图片亮度的示例
2020/12/03 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
毕业生优秀推荐信
2013/11/26 职场文书
农村党支部先进事迹
2014/01/14 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
社区志愿者培训方案
2014/06/10 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
幼儿园感谢信
2015/01/21 职场文书
校友会致辞
2015/07/30 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python