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基础教程之对象和类的实际运用
Aug 29 Python
Python读取Excel的方法实例分析
Jul 11 Python
Linux下多个Python版本安装教程
Aug 15 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
Python中的heapq模块源码详析
Jan 08 Python
Django实现发送邮件功能
Jul 18 Python
python生成随机红包的实例写法
Sep 02 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
django框架ModelForm组件用法详解
Dec 11 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Python建造者模式案例运行原理解析
Jun 29 Python
python中print格式化输出的问题
Apr 16 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里面的抽象类
2010/01/28 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
解析php中memcache的应用
2013/06/18 PHP
ejs v9 javascript模板系统
2012/03/21 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
python实现的各种排序算法代码
2013/03/04 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
岳父生日宴会答谢词
2014/01/13 职场文书
小学信息技术教学反思
2014/02/10 职场文书
房屋授权委托书范本
2014/10/07 职场文书
2014年人事科工作总结
2014/11/19 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server
java版 联机五子棋游戏
2022/05/04 Java/Android