Python脚本批量去除代码注释的完整方案
本文介绍如何使用Python脚本批量去除指定文件夹中所有Python文件的注释。通过结合正则表达式匹配单行及多行注释,并读取INI配置文件指定源与目标路径,实现自动化清理。脚本支持忽略特定格式的注释行,并将处理后的文件保存至新目录,适用于代码优化或清理场景。
Python注释类型与去除需求
在Python开发中,规范使用模块、函数、方法及行内注释是良好的编码习惯。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')
配置文件与批量处理逻辑
配置文件 CleanNote.ini 的标准格式说明:
[CleanNote]
SrcPath=E:/test
DescPath=E:/test/newfiles
实现批量处理指定源文件夹下所有.py文件的注释,并将清理后的文件生成并拷贝至指定的目的文件夹。
注释识别与保留策略扩展
实例扩展应用:
print("程序中常见的注释")
注意:此程序将会删除的,会在Demo注释末尾添加 YES,不会删除的 NO
# 这是第一种注释,'#'放在开头(YES)
ret = analysix(data) # 这是第二种注释,'#'跟在某一个语句后面(NO)
"""
第三种注释
有时候需要注释掉某一整块东西的时候,使用这个
(YES)
"""
""" 第四种注释,这是函数或者类的说明(NO)"""
# 这是第四种注释,'#'前面加了空格(YES)
至此,关于Python脚本过滤文件中注释的教程介绍完毕。如需了解更多相关方法,可查阅本站历史文章或继续浏览后续内容,感谢支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









