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程序语言快速上手教程
Jul 18 Python
Python urlopen()函数 示例分享
Jun 12 Python
Django自定义分页效果
Jun 27 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
简单谈谈python中的lambda表达式
Jan 19 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
基于Python实现用户管理系统
Feb 26 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
python 一维二维插值实例
Apr 22 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
Aug 07 Python
Python如何实现Paramiko的二次封装
Jan 30 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的库,结果发现很多东西
2006/12/31 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
List all the Databases on a SQL Server
2007/06/21 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
js点击选择文本的方法
2015/02/09 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
python获取标准北京时间的方法
2015/03/24 Python
Python内置模块turtle绘图详解
2017/12/09 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
python如何删除文件、目录
2020/06/23 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
党员教师一句话承诺
2014/05/30 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
护理学专业求职信
2014/06/29 职场文书
房地产端午节活动方案
2014/08/24 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
美术教师个人总结
2015/02/06 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python