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实现web方式logview的方法
Aug 10 Python
深入理解Django中内置的用户认证
Oct 06 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
Oct 20 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python实现数据分析与建模
Jul 11 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
python使用正则来处理各种匹配问题
Dec 22 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 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
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
javascript时间差插件分享
2016/07/18 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python如何删除文件、目录
2020/06/23 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
《鹬蚌相争》教学反思
2014/04/22 职场文书
小学生综合素质评语
2014/04/23 职场文书
党性分析自查总结
2014/10/14 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS