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内置的模块与函数进行不同进制的数的转换
Mar 12 Python
python实现报表自动化详解
Nov 16 Python
python使用knn实现特征向量分类
Dec 26 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
Series和DataFrame使用简单入门
Nov 13 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
Python numpy多维数组实现原理详解
Mar 10 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
require.js的用法详解
2015/10/20 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
学习vue.js计算属性
2016/12/03 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
Python简明入门教程
2015/08/04 Python
Python中的super()方法使用简介
2015/08/14 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
机械制造专业个人的自我评价
2013/12/28 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
工作求职信
2014/07/04 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
投标承诺函格式
2015/01/21 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android