将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中的Classes和Metaclasses详解
Apr 02 Python
python 专题九 Mysql数据库编程基础知识
Mar 16 Python
Python 3中print函数的使用方法总结
Aug 08 Python
浅谈python数据类型及类型转换
Dec 18 Python
python 从csv读数据到mysql的实例
Jun 21 Python
Python求正态分布曲线下面积实例
Nov 20 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
parser.add_argument中的action使用
Apr 20 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
python 判断文件或文件夹是否存在
Mar 18 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
2020最新CPU的性能排名
2020/04/02 数码科技
天津市收音机工业发展史
2021/03/04 无线电
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python中字符串的修改及传参详解
2016/11/30 Python
Python模块文件结构代码详解
2018/02/03 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
Python持续监听文件变化代码实例
2020/07/22 Python
用python批量移动文件
2021/01/14 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
三好学生事迹材料
2014/12/24 职场文书
导游词之任弼时故居
2020/01/07 职场文书