将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 相关文章推荐
django实现分页的方法
May 26 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
python逆序打印各位数字的方法
Jun 25 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
python3中的eval和exec的区别与联系
Oct 10 Python
python装饰器的特性原理详解
Dec 25 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
利用pyecharts读取csv并进行数据统计可视化的实现
Apr 17 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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删除HTMl标签的三种解决方法
2013/06/30 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
JQuery UI皮肤定制
2009/07/27 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python3 处理JSON的实例详解
2017/10/29 Python
名片管理系统python版
2018/01/11 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python用requests实现http请求代码实例
2019/10/31 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
python如何绘制疫情图
2020/09/16 Python
Pandas的数据过滤实现
2021/01/15 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
优秀民警事迹材料
2014/01/29 职场文书
团支部推优材料
2014/05/21 职场文书
社区矫正工作方案
2014/06/04 职场文书
保险公司演讲稿
2014/09/02 职场文书
结婚纪念日感言
2015/08/01 职场文书
美容院员工规章制度
2015/08/05 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android