将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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
处理Python中的URLError异常的方法
Apr 30 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
Python中的sort()方法使用基础教程
Jan 08 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 Python
使用python 爬虫抓站的一些技巧总结
Jan 10 Python
windows下python安装pip图文教程
May 25 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
容易被忽略的Python内置类型
Sep 03 Python
Python基于execjs运行js过程解析
Nov 27 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中批量替换文件名的实现代码
2011/07/20 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
js数据类型检测总结
2018/08/05 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python中while循环语句用法简单实例
2015/05/07 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
2014年社区学雷锋活动总结
2014/03/09 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
本溪关门山导游词
2015/02/09 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
《风娃娃》教学反思
2016/02/18 职场文书