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如何读取MySQL数据库表数据
Mar 11 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
python实现类之间的方法互相调用
Apr 29 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
python Tkinter版学生管理系统
Feb 20 Python
Django 数据库同步操作技巧详解
Jul 19 Python
python3调用windows dos命令的例子
Aug 14 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
浅析python中特殊文件和特殊函数
Feb 24 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
PHP 中的一些经验积累
2006/10/09 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python实现文本文件合并
2015/12/29 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
python实现可逆简单的加密算法
2019/03/22 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
wxpython布局的实现方法
2019/11/01 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
python中entry用法讲解
2020/12/04 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
大学生期末自我鉴定
2014/02/01 职场文书
《金子》教学反思
2014/04/13 职场文书
2014年司法所工作总结
2014/11/22 职场文书
请病假条范文
2015/08/17 职场文书
迎国庆主题班会
2015/08/17 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书