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 第一步 hello world
Sep 25 Python
Python的词法分析与语法分析
May 18 Python
Python正则表达式使用经典实例
Jun 21 Python
Python批量更改文件名的实现方法
Oct 29 Python
linux环境下Django的安装配置详解
Jul 22 Python
Python上下文管理器用法及实例解析
Nov 11 Python
python 实现目录复制的三种小结
Dec 04 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
Python读取yaml文件的详细教程
Jul 21 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
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
php 中的closure用法详解
2017/06/12 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
javascript每日必学之循环
2016/02/19 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python定时执行之Timer用法示例
2015/05/27 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Python 专题一 函数的基础知识
2017/03/16 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
Python实现序列化及csv文件读取
2020/01/19 Python
python软件都是免费的吗
2020/06/18 Python
Pycharm调试程序技巧小结
2020/08/08 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
农救科工作职责
2013/11/27 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
授权委托书怎么写
2014/04/03 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书