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 strip lstrip rstrip使用方法
Sep 06 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
python如何实现一个刷网页小程序
Nov 27 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
解决python有时候import不了当前的包问题
Aug 28 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
Django实现基于类的分页功能
Oct 31 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
详解Python类和对象内容
Jun 22 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&amp;&amp;mysql)六
2006/10/09 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
在python中修改.properties文件的操作
2020/04/08 Python
基于python实现计算两组数据P值
2020/07/10 Python
什么是Web Service?
2012/07/25 面试题
轻化专业学生实习自我鉴定
2013/09/20 职场文书
工程预算与管理应届生求职信
2013/10/06 职场文书
校庆接待方案
2014/03/18 职场文书
2014年新生军训方案
2014/05/01 职场文书
计算机求职信
2014/07/02 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
教师批评与自我批评
2014/10/15 职场文书
业务员岗位职责范本
2015/04/03 职场文书
新郎接新娘保证书
2015/05/08 职场文书
教务处干事工作总结
2015/08/14 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
Jsonp劫持学习
2021/04/01 PHP