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模块顶层运行的代码引起的一个Bug
Jul 04 Python
Python实现包含min函数的栈
Apr 29 Python
解决python报错MemoryError的问题
Jun 26 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
python线程join方法原理解析
Feb 11 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
如何用python实现一个HTTP连接池
Jan 14 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php 文件缓存函数
2011/10/08 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
vue mounted组件的使用
2018/06/18 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
Python实现全角半角转换的方法
2014/08/18 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
python2.7的编码问题与解决方法
2016/10/04 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python requests 测试代理ip是否生效
2018/07/25 Python
Python实现常见的回文字符串算法
2018/11/14 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python属于解释型语言么
2020/06/15 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
超市员工辞职信范文
2015/05/12 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书