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 相关文章推荐
zbar解码二维码和条形码示例
Feb 07 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
python 文件转成16进制数组的实例
Jul 09 Python
详解python3中的真值测试
Aug 13 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
Python Pandas 箱线图的实现
Jul 23 Python
在python中做正态性检验示例
Dec 09 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
Python常用扩展插件使用教程解析
Nov 02 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
用户注册常用javascript代码
2009/08/29 Javascript
测试你的JS的掌握程度的代码
2009/12/09 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
创建学习型党组织实施方案
2014/03/29 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
企业介绍信范文
2015/01/30 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
MySQL如何解决幻读问题
2021/08/07 MySQL
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题