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 实现对数据集的归一化的方法(0-1之间)
Jul 17 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
python requests post多层字典的方法
Dec 27 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
Python实现最大子序和的方法示例
Jul 05 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
python数据化运营的重要意义
Nov 25 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
Python同时处理多个异常的方法
Jul 28 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 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中用正则表达式清除字符串的空白
2011/01/17 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
CSS3伪类选择器:nth-child()
2009/04/02 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
个人简历中的自我评价范例
2013/10/29 职场文书
优秀学生自我鉴定范例
2013/12/18 职场文书
校园招聘策划书
2014/01/09 职场文书
车间机修工岗位职责
2014/02/28 职场文书
仓库管理计划书
2014/05/04 职场文书
入股协议书范本
2014/11/01 职场文书
今日说法观后感
2015/06/08 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
Python&Matlab实现樱花的绘制
2022/04/07 Python
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python