将python代码和注释分离的方法


Posted in Python onApril 21, 2018

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 相关文章推荐
Python常用模块介绍
Nov 21 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python实现发送QQ邮件的封装
Jul 14 Python
python提取图像的名字*.jpg到txt文本的方法
May 10 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
在django中自定义字段Field详解
Dec 03 Python
NumPy统计函数的实现方法
Jan 21 Python
Python 下载Bing壁纸的示例
Sep 29 Python
python关于倒排列的知识点总结
Oct 13 Python
Python request post上传文件常见要点
Nov 20 Python
Python基于百度AI的文字识别的示例
Apr 21 #Python
python实现随机调用一个浏览器打开网页
Apr 21 #Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 #Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 #Python
Django项目实战之用户头像上传与访问的示例
Apr 21 #Python
基于Python 装饰器装饰类中的方法实例
Apr 21 #Python
使用python装饰器计算函数运行时间的实例
Apr 21 #Python
You might like
短波的认识
2021/03/01 无线电
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
JavaScript的parseInt 取整使用
2011/05/09 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
简单的python协同过滤程序实例代码
2018/01/31 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
酒店服务与管理毕业生求职信
2013/11/02 职场文书
公司业务员岗位职责
2014/03/18 职场文书
项目工作说明书
2014/07/29 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
群众路线对照检查材料
2014/09/22 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python