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 字符串操作方法大全
Mar 11 Python
Python实现的一个找零钱的小程序代码分享
Aug 25 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
python破解zip加密文件的方法
May 31 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
Python上下文管理器全实例详解
Nov 12 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
基于Python实现扑克牌面试题
Dec 11 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Python将list元素转存为CSV文件的实现
Nov 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中逗号与点号的区别
2013/08/05 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
Python实现基本线性数据结构
2016/08/22 Python
python程序变成软件的实操方法
2019/06/24 Python
python每天定时运行某程序代码
2019/08/16 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
高中同学聚会邀请函
2014/01/11 职场文书
部队万能检讨书
2014/02/20 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
品质口号大全
2014/06/17 职场文书
解除劳动合同证明书
2014/09/26 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
南极大冒险观后感
2015/06/05 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
python 判断文件或文件夹是否存在
2022/03/18 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL
vue封装数字翻牌器
2022/04/20 Vue.js
html中两种获取标签内的值的方法
2022/06/16 jQuery