Python如何脚本过滤文件中的注释


Posted in Python onMay 27, 2020

确保对模块, 函数, 方法和行内注释使用正确的风格,Python中的注释有单行注释和多行注释。如果希望去除文件中所有注释,如何做呢?

Python中的注释:

Python中单行注释以 # 开头,例如:

# 这是一个注释
print("Hello, World!")

多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来,例如:

#!/usr/bin/python3 
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号 
这是多行注释,用三个单引号
'''
print("Hello, World!")

使用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 
  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文件的注释,并生成拷贝与指定目的文件夹

实例扩展:

print("程序中常见的注释")
 
注意:此程序将会删除的,会在Demo注释末尾添加 YES,不会删除的 NO
 
# 这是第一种注释,'#'放在开头(YES)
 
ret = analysix(data)  # 这是第二种注释,'#'跟在某一个语句后面(NO)
 
"""
第三种注释
有时候需要注释掉某一整块东西的时候,使用这个
(YES)
"""
 
""" 第四种注释,这是函数或者类的说明(NO)"""
 
    # 这是第四种注释,'#'前面加了空格(YES)

到此这篇关于Python如何脚本过滤文件中的注释的文章就介绍到这了,更多相关Python脚本过滤文件中的注释方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
python实现排序算法解析
Sep 08 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
Django Rest framework三种分页方式详解
Jul 26 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
Python实现图片添加文字
Nov 26 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
在终端启动Python时报错的解决方案
Nov 20 Python
Python如何获取文件指定行的内容
May 27 #Python
Python web如何在IIS发布应用过程解析
May 27 #Python
利用Python实现某OA系统的自动定位功能
May 27 #Python
Python中常见的数制转换有哪些
May 27 #Python
Python如何实现邮件功能
May 27 #Python
Python中内建模块collections如何使用
May 27 #Python
Python OpenCV实现测量图片物体宽度
May 27 #Python
You might like
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
PHP类的封装与继承详解
2015/09/29 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
详解Python3.1版本带来的核心变化
2015/04/07 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
pandas计数 value_counts()的使用
2019/06/24 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Python-openCV开运算实例
2020/07/05 Python
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
革命先烈的英雄事迹材料
2014/02/15 职场文书
品质主管岗位职责
2014/03/16 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
初中家长评语大全
2014/12/26 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL