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 23 Python
使用Python实现下载网易云音乐的高清MV
Mar 16 Python
简介Python中用于处理字符串的center()方法
May 18 Python
Python制作爬虫抓取美女图
Jan 20 Python
Java与Python两大幸存者谁更胜一筹呢
Apr 12 Python
python实现计数排序与桶排序实例代码
Mar 28 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
Python如何获取文件指定行的内容
May 27 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
详解Python openpyxl库的基本应用
Feb 26 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 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
JS实现随机点名器
2020/04/12 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
python实现连接mongodb的方法
2015/05/08 Python
python中的全局变量用法分析
2015/06/09 Python
Python开发的实用计算器完整实例
2017/05/10 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
python sorted函数原理解析及练习
2020/02/10 Python
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
大学毕业生通用求职信
2013/09/28 职场文书
QA工程师岗位职责
2013/11/20 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
捐款通知怎么写
2015/04/24 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书