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正则分组的应用
Nov 10 Python
python二分法实现实例
Nov 21 Python
python批量同步web服务器代码核心程序
Sep 01 Python
详解Django中的权限和组以及消息
Jul 23 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
Python3 集合set入门基础
Feb 10 Python
Python叠加矩形框图层2种方法及效果
Jun 18 Python
如何使用Python调整图像大小
Sep 26 Python
Python 3.9的到来到底是意味着什么
Oct 14 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 和 MySQL 基础教程(二)
2006/10/09 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
js Function类型
2011/12/04 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
原生JS轮播图插件
2017/02/09 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
Python科学画图代码分享
2017/11/29 Python
django静态文件加载的方法
2018/05/20 Python
python多进程实现文件下载传输功能
2018/07/28 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
Django之路由层的实现
2019/09/09 Python
python django中8000端口被占用的解决
2019/12/17 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
如何对python的字典进行排序
2020/06/19 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
大学自我鉴定范文
2013/12/26 职场文书
营业员演讲稿
2013/12/30 职场文书
学校七一活动方案
2014/01/19 职场文书
对标管理实施方案
2014/03/12 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
2014年党务公开方案
2014/05/08 职场文书
通信工程专业求职信
2014/06/04 职场文书
安全口号大全
2014/06/21 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android