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中优化NumPy包使用性能的教程
Apr 23 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
Python列表list排列组合操作示例
Dec 18 Python
Python3 关于pycharm自动导入包快捷设置的方法
Jan 16 Python
python游戏地图最短路径求解
Jan 16 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
基于python爬取有道翻译过程图解
Mar 31 Python
解析Python 偏函数用法全方位实现
Jun 26 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
3
2006/10/09 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
js的一些常用方法小结
2011/06/29 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python打包成so文件过程解析
2019/09/28 Python
什么是python的函数体
2020/06/19 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
期末总结的个人自我评价
2013/11/02 职场文书
物流专业自荐信
2014/05/23 职场文书
大学生毕业个人总结
2015/02/15 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android