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自动化测试实例解析
Sep 28 Python
介绍Python中几个常用的类方法
Apr 08 Python
python实现马耳可夫链算法实例分析
May 20 Python
Python正规则表达式学习指南
Aug 02 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
Python时间戳使用和相互转换详解
Dec 11 Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
Python字符串对象实现原理详解
Jul 01 Python
Django工程的分层结构详解
Jul 18 Python
Python爬虫爬取有道实现翻译功能
Nov 27 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防止站外远程提交表单的方法
2014/10/20 PHP
smarty简单分页的实现方法
2014/10/27 PHP
php计算函数执行时间的方法
2015/03/20 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python共享引用(多个变量引用)示例代码
2013/12/04 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
使用python求解二次规划的问题
2020/02/29 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
Python使用Matlab命令过程解析
2020/06/04 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
教师自我评价范例
2013/09/24 职场文书
药店主任岗位责任制
2014/02/10 职场文书
出生公证委托书
2014/04/03 职场文书
文明村镇申报材料
2014/05/06 职场文书
竞聘自述材料
2014/08/25 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
python的html标准库
2022/04/29 Python