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中for循环的使用
Apr 14 Python
python插入数据到列表的方法
Apr 30 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
Python的logging模块基本用法
Dec 24 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 Python
详解Pymongo常用查询方法总结
Jan 29 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
python中的句柄操作的方法示例
2019/06/20 Python
Pyqt5实现英文学习词典
2019/06/24 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
python机器学习库xgboost的使用
2020/01/20 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
教学个人的自我评价分享
2014/02/16 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
自荐信格式范文
2015/03/04 职场文书