将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使用any判断一个对象是否为空的方法
Nov 19 Python
小小聊天室Python代码实现
Aug 17 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
如何实现删除numpy.array中的行或列
May 08 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
Python3.5以上版本lxml导入etree报错的解决方案
Jun 26 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Python Django框架模板渲染功能示例
Nov 08 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
python和anaconda的区别
May 06 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
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python操作列表的函数使用代码详解
2017/12/28 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
Python闭包函数定义与用法分析
2018/07/20 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
大四本科生的自我评价
2013/12/30 职场文书
社区志愿者心得体会
2014/01/03 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
四年级小学生评语
2014/12/26 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
物业公司管理制度
2015/08/05 职场文书
新学期家长寄语2016
2015/12/03 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫