将python代码和注释分离
2017-05-03 17:56
204 查看
python的注释方式和C语言、C++、java有所不同
python语言中,使用‘#’ 来进行注释,其次还有使用 三个引号来进行注释
本文的程序将把 python 中 使用‘#’ 号 好 三个引号的注释分离出来, 当然也能再次合并回去
有需求的小伙伴可以来围观了
#!/usr/bin/python
#coding=utf-8
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
class Comment_Filter:
#初始化参数
def __init__(self):
self.file=None
self.commentfile=None
self.noncommentline=None
self.resotrefile=None
self.Commentline=[]
self.NonCommentline=[]
self.globalcomment=0
#判断是不是注释行
def is_Comment_Line(self,line,i):
if i > 2 and line.startswith("#"):
return 1
if line.startswith("'''") and self.globalcomment==1:
self.globalcomment=0
return 1
if line.startswith("'''") and self.globalcomment==0:
self.globalcomment=1
return 1
return self.globalcomment
#保存注释行
def save_Comment_Line(self,line,i):
self.Commentline.append({"line":line, "line_num":i})
#保存代码行
def save_NonComment_Line(self,line,i):
self.NonCommentline.append({"line":line, "line_num":i})
#恢复分离的文件
def restore_Org_File(self):
filename="output/"+self.filename+"_org.txt"
self.resotrefile=open(filename, "w+")
for i in range(1,len(self.Commentline)+len(self.NonCommentline)+1):
for commentline in self.Commentline:
if int(commentline['line_num'])==i:
self.resotrefile.write(commentline['line'])
for noncommentline in self.NonCommentline:
if int(noncommentline['line_num'])==i:
self.resotrefile.write(noncommentline['line'])
print "已输出到%s" % filename
self.resotrefile.close()
#主运行函数
def run(self):
if not os.path.exists("output"):
os.mkdir("output")
print "请输入要处理的文件名"
input_file_name=raw_input()
while len(input_file_name)>1:
print "处理文件为%s" % input_file_name
self.file=open(input_file_name)
self.filename=input_file_name.split(".")[1]
commentfilename="output/"+input_file_name.split(".")[1]+"_comment.txt"
self.commentfile=open(commentfilename,"w+")
noncommentlinename="output/"+input_file_name.split(".")[1]+"_code.txt"
self.noncommentline=open(noncommentlinename,"w+")
i = 0
while self.file != None:
line = self.file.readline()
i +=1
if not line:
print "文件已读完"
print "以下是注释内容"
for commentline in self.Commentline:
print "第%d行: %s" % (commentline['line_num'],commentline['line'])
self.commentfile.write(commentline['line'])
print "以下是代码内容"
for noncommentline in self.NonCommentline:
print "第%d行: %s" % (noncommentline['line_num'],noncommentline['line'])
self.noncommentline.write(noncommentline['line'])
restore=raw_input("是否恢复成原文件:")
if restore == 'Y':
self.restore_Org_File()
self.commentfile.close()
self.noncommentline.close()
break
if self.is_Comment_Line(line,i):
self.save_Comment_Line(line,i)
else:
self.save_NonComment_Line(line,i)
print "请输入文件名"
input_file_name=raw_input('if quit,please input Q:')
if input_file_name == 'Q':
break
if __name__ == '__main__':
print '''
*****************************************
** Welcome to Spider of baidutieba **
** Created on 2017-05-03 **
** @author: Jimy _Fengqi **
*****************************************
'''
my_file_divide_filter=Comment_Filter()
my_file_divide_filter.run()
本程序已知问题, 不能处理 空格之后在以‘#’ 开头的注释,所有的注释行,必须是顶格写的
以后有时间的话,再重新写一版完整的吧
python语言中,使用‘#’ 来进行注释,其次还有使用 三个引号来进行注释
本文的程序将把 python 中 使用‘#’ 号 好 三个引号的注释分离出来, 当然也能再次合并回去
有需求的小伙伴可以来围观了
#!/usr/bin/python
#coding=utf-8
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
class Comment_Filter:
#初始化参数
def __init__(self):
self.file=None
self.commentfile=None
self.noncommentline=None
self.resotrefile=None
self.Commentline=[]
self.NonCommentline=[]
self.globalcomment=0
#判断是不是注释行
def is_Comment_Line(self,line,i):
if i > 2 and line.startswith("#"):
return 1
if line.startswith("'''") and self.globalcomment==1:
self.globalcomment=0
return 1
if line.startswith("'''") and self.globalcomment==0:
self.globalcomment=1
return 1
return self.globalcomment
#保存注释行
def save_Comment_Line(self,line,i):
self.Commentline.append({"line":line, "line_num":i})
#保存代码行
def save_NonComment_Line(self,line,i):
self.NonCommentline.append({"line":line, "line_num":i})
#恢复分离的文件
def restore_Org_File(self):
filename="output/"+self.filename+"_org.txt"
self.resotrefile=open(filename, "w+")
for i in range(1,len(self.Commentline)+len(self.NonCommentline)+1):
for commentline in self.Commentline:
if int(commentline['line_num'])==i:
self.resotrefile.write(commentline['line'])
for noncommentline in self.NonCommentline:
if int(noncommentline['line_num'])==i:
self.resotrefile.write(noncommentline['line'])
print "已输出到%s" % filename
self.resotrefile.close()
#主运行函数
def run(self):
if not os.path.exists("output"):
os.mkdir("output")
print "请输入要处理的文件名"
input_file_name=raw_input()
while len(input_file_name)>1:
print "处理文件为%s" % input_file_name
self.file=open(input_file_name)
self.filename=input_file_name.split(".")[1]
commentfilename="output/"+input_file_name.split(".")[1]+"_comment.txt"
self.commentfile=open(commentfilename,"w+")
noncommentlinename="output/"+input_file_name.split(".")[1]+"_code.txt"
self.noncommentline=open(noncommentlinename,"w+")
i = 0
while self.file != None:
line = self.file.readline()
i +=1
if not line:
print "文件已读完"
print "以下是注释内容"
for commentline in self.Commentline:
print "第%d行: %s" % (commentline['line_num'],commentline['line'])
self.commentfile.write(commentline['line'])
print "以下是代码内容"
for noncommentline in self.NonCommentline:
print "第%d行: %s" % (noncommentline['line_num'],noncommentline['line'])
self.noncommentline.write(noncommentline['line'])
restore=raw_input("是否恢复成原文件:")
if restore == 'Y':
self.restore_Org_File()
self.commentfile.close()
self.noncommentline.close()
break
if self.is_Comment_Line(line,i):
self.save_Comment_Line(line,i)
else:
self.save_NonComment_Line(line,i)
print "请输入文件名"
input_file_name=raw_input('if quit,please input Q:')
if input_file_name == 'Q':
break
if __name__ == '__main__':
print '''
*****************************************
** Welcome to Spider of baidutieba **
** Created on 2017-05-03 **
** @author: Jimy _Fengqi **
*****************************************
'''
my_file_divide_filter=Comment_Filter()
my_file_divide_filter.run()
本程序已知问题, 不能处理 空格之后在以‘#’ 开头的注释,所有的注释行,必须是顶格写的
以后有时间的话,再重新写一版完整的吧
相关文章推荐
- 将python代码和注释分离的方法
- python写的统计PYTHON文件的(代码行数,空行数,注释行数)小程序
- 用来删除菊花公司代码中大量无用的函数头部注释的python剃刀
- SyntaxError: Non-ASCII character ‘\xe5′ in file和在代码中插入中文,python中文注释
- 机器学习实战 第二章KNN(1)python代码及注释
- [Dynamic Language] 用Sphinx自动生成python代码注释文档
- 我的程序(4):C++代码注释分离
- python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)
- 利用PYTHON的正则表达式去掉代码中的注释
- 第0007道练习题_Python统计代码行数注释行数空白行数
- python2.7添加注释后,代码无法保存
- Sublime Text对Python代码加注释的快捷键
- vim编译器中多行注释方法(尤其对python代码注释)
- SVD Python代码注释
- python 统计代码行数,注释行数的简单实现
- python 3.3 代码中加中文注释
- Python学习-21.Python的代码注释
- 每天一个python小程序 007有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
- vim中批量注释与解注释python代码
- python 基础代码注释和时间属性