将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 Mysql自动备份脚本
Jul 14 Python
使用python实现baidu hi自动登录的代码
Feb 10 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
python3爬虫学习之数据存储txt的案例详解
Apr 24 Python
python实现画出e指数函数的图像
Nov 21 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
scrapy头部修改的方法详解
Dec 06 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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中文繁体和简体相互转换的方法
2015/03/21 PHP
php轻松实现文件上传功能
2016/03/03 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
PHP 实现重载
2021/03/09 PHP
扩展String功能方法
2006/09/22 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
10分钟学会js处理json的常用方法
2020/12/06 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python构造函数及解构函数介绍
2015/02/26 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python实现全排列的打印
2018/08/18 Python
django解决跨域请求的问题
2018/11/11 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
关于爱国的演讲稿
2014/05/07 职场文书
企业贷款委托书格式
2014/09/12 职场文书
授权收款委托书
2014/09/23 职场文书
党员三严三实心得体会
2014/10/13 职场文书
财务工作失误检讨书
2015/02/19 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
mysql自增长id用完了该怎么办
2022/02/12 MySQL