Python文件去除注释的方法


Posted in Python onMay 25, 2015

本文实例讲述了Python文件去除注释的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/python 
# -*- coding: GBK -*- 
#writer:xmnathan 
#py文件去注释 
import re 
import os 
import ConfigParser 
Python='CleanNote' 
def ReadIni(path,section,option):#文件路径,章节,关键词 
  #读取ini
  cf=ConfigParser.ConfigParser() 
  cf.read(path) 
  value=cf.get(section,option)#如果用getint()则直接读取该数据类型为整数 
  return value 
def IsPassLine(strLine): 
  #是否是可以忽略的行 
  #可忽略行的正则表达式列表 
  RegularExpressions=["""/'.*#.*/'""","""/".*#.*/"""", 
            """/'/'/'.*#.*/'/'/'""","""/"/"/".*#.*/"/"/""""]
  for One in RegularExpressions: 
    zz=re.compile(One) 
    if re.search(zz,strLine)==None: 
      continue 
    else: 
      return True#有匹配 则忽略 
    return False 
def ReadFile(FileName): 
  #读取并处理文件 
  fobj=open(FileName,'r') 
  AllLines=fobj.readlines() 
  fobj.close() 
  NewStr='' 
  LogStr='/n%20s/n'%(FileName.split('//')[-1])#输出的日志 
  nline=0 
  for eachiline in AllLines: 
    index=eachline.find('#')#获取带注释句‘#'的位置索引 
    if index==-1 or nline<3 or IsPassLine(eachline): 
      if eachiline.strip()!='':#排除纯空的行 
        NewStr=NewStr+eachiline 
    else: 
      if index!=0: 
        NewStr=NewStr+eachiline[:index]+'/n'#截取后面的注释部分 
        LogStr+="ChangeLine: %s/t%s"%(nline,eachline[index:]) 
    nline+=1 
  return NewStr,LogStr 
def MakeCleanFile(SrcPath,DescPath,FileList): 
  fLog=open(DescPath+'//'+'CleanNoteLog.txt','w') 
  for File in FileList: 
    curStr,LogStr=ReadFile(SrcPath+'//'+File) 
    fNew=open(DescPath+'//'+File,'w') 
    fNew=write(curStr) 
    fNew.close() 
    fLog.write(LogStr) 
  fLog.close() 
def Main(): 
  #从ini获取源文件夹及目标文件夹路径 
  IniPath=os.getcwd()+'//'+PtName+'.ini' 
  SrcPath=ReadIni(IniPath,PyName,'SrcPath')#源文件夹 
  DescPath=ReadIni(IniPath,PyName,'DescPath')#目的文件夹 
  #如果目的文件夹不存在,创建之 
  if not os.path.exists(DescPath): 
    os.makedirs(DescPath) 
  FileList=[] 
  for files in os.walk(SrcPath): 
    for FileName in files[2]: 
      if FileName.split('.')[-1]=='py': 
        FileList.append(FileName) 
  MakeCleanFile(SrcPath,DescPath,FileList) 
if __name__=='__main__': 
  Main() 
  print '>>>End<<<' 
  os.system('pause')

ps:配置文件CleanNote.ini的格式

[CleanNote] 
SrcPath=E:/test 
DescPath=E:/test/newfiles

 
批量去除指定源文件夹中的py文件的注释,并生成拷贝与指定目的文件夹

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python Deque 模块使用详解
Jul 04 Python
python实现的登录和操作开心网脚本分享
Jul 09 Python
python里大整数相乘相关技巧指南
Sep 12 Python
python常见的格式化输出小结
Dec 15 Python
python九九乘法表的实例
Sep 26 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 Python
python提取页面内url列表的方法
May 25 #Python
python实现批量改文件名称的方法
May 25 #Python
python基于右递归解决八皇后问题的方法
May 25 #Python
python基于urllib实现按照百度音乐分类下载mp3的方法
May 25 #Python
Python输出9*9乘法表的方法
May 25 #Python
Python批量重命名同一文件夹下文件的方法
May 25 #Python
Python实现豆瓣图片下载的方法
May 25 #Python
You might like
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
递归删除一个节点以及该节点下的所有节点示例
2014/03/19 PHP
php之curl设置超时实例
2014/11/03 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
jQuery最佳实践完整篇
2011/08/20 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
Python异常处理操作实例详解
2018/08/28 Python
python通过zabbix api获取主机
2018/09/17 Python
postman和python mock测试过程图解
2020/02/22 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
移动通信专业自荐信范文
2013/11/12 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
环保建议书100字
2014/05/14 职场文书
2014年社区工作总结
2014/11/18 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书