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网络编程之TCP套接字简单用法示例
Apr 09 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
解决Pandas的DataFrame输出截断和省略的问题
Feb 08 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
简单了解Django ContentType内置组件
Jul 23 Python
django 连接数据库 sqlite的例子
Aug 14 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
Python的pygame安装教程详解
Feb 10 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
Python计算IV值的示例讲解
Feb 28 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Python经常使用的一些内置函数
Apr 11 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遍历XML文档所有节点的方法
2015/03/12 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Django中create和save方法的不同
2019/08/13 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
为数据库创建索引都需要注意些什么
2012/07/17 面试题
求职简历的自我评价怎样写好
2013/10/07 职场文书
资产经营总监岗位职责范文
2013/12/01 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
python缺失值的解决方法总结
2021/06/09 Python