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爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
python 整数越界问题详解
Jun 27 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
python3跳出一个循环的实例操作
Aug 18 Python
python 远程执行命令的详细代码
Feb 15 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
php的socket编程详解
2016/11/20 PHP
php中final关键字用法分析
2016/12/07 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
简单的js表单验证函数
2013/10/28 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
python比较2个xml内容的方法
2015/05/11 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
python 多个参数不为空校验方法
2019/02/14 Python
更新修改后的Python模块方法
2019/03/03 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python库matplotlib绘制坐标图
2019/10/18 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
身份证丢失证明
2015/06/19 职场文书
2016公司年会主持词
2015/07/01 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
详解在OpenCV中如何使用图像像素
2022/03/03 Python