将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进程管理工具supervisor使用实例
Sep 17 Python
python连接字符串的方法小结
Jul 13 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
详解重置Django migration的常见方式
Feb 15 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
Python3之外部文件调用Django程序操作model等文件实现方式
Apr 07 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的魔术常量__METHOD__简介
2014/07/08 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
js 图片转base64的方式(两种)
2018/04/24 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
python属于软件吗
2020/06/18 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
python3中布局背景颜色代码分析
2020/12/01 Python
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
Sql面试题
2013/03/20 面试题
Python如何定义一个函数
2015/09/01 面试题
财会自我鉴定范文
2013/12/27 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
毕业生求职信
2014/06/10 职场文书
拉歌口号大全
2014/06/13 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
详解Laravel服务容器的优势
2021/05/29 PHP
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js