在线|在线 Python运行工具
摘要
昨天心血来潮,做了一个在线的PHP编辑工具 http://blog.csdn.net/marksinoberg/article/details/53869637 ,可以方便的练习PHP的基本语法,以及数据库的操作。结尾说可能会做一个Python版的在线编辑工具,那么说到做到。今天就写了个Python版的,供身边的同学以及初学者练习和使用。
准备
看过昨天的那篇博客的应该不难理解,这个工具背后的工作原理。
上传源码,运行脚本,反馈结果。与之相比,这次的代码稍有些不同,毕竟昨天的是纯PHP代码之间的处理,而今天则是在PHP和Python之间的耦合。所以需要额外的增加一点处理。
PHP环境设置
在编码之前,应该先把PHP环境设置一下。具体来说就是修改一下php.ini文件。
去掉php.ini文件中的disable_functions前面的原理 这里说的原理,从狭义上来讲只是单纯的对于使用PHP调用Python代码。;
,即可开启调用外部语言的拓展。
一般来说有这么两种方式:
- 通过system函数
- 通过exec函数
system方式
官方文档解释如下:
文章图片
system官方文档 system函数本身具有打印命令执行输出的功能,也就是说,程序中的输出可在PHP页面中显示。
如果程序成功执行,则system的返回值为程序输出的最后一行,如果执行失败,返回false。
第二个参数是可选的,用来得到命令执行后的状态码,0表示成功调用外部程序,1表示调用失败。
exec 方式
官方文档有如下解释:
文章图片
exec官方文档 exec ()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。
虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,方法是把结果逐行追加到array的结尾处。
另外需要注意的是:只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。
源码 核心
核心思路如下:
- 获取用户输入Python源码,然后上传到服务器上的temp.py文件。
- 通过PHP调用外部的Python代码,执行相关脚本。
- 前台通过ajax方式请求代码运行结果,并显示在result页面块上。
index.php
郭璞 的在线Python工具 - 锐客网
.container {
width: 1356px;
height: 640px;
position: absolute;
background: #CCC;
}.left {
width: 50%;
height: 100%;
background: lightgray;
position: relative;
float: left;
}.header {
width: auto;
height: 61px;
}input {
width: 180px;
height: 60px;
position: relative;
background: lightgreen;
float: right;
margin-right: 12px;
margin-top: 6px;
border-radius: 25px;
box-shadow: 1px 1px 1px #6e6e6e;
}.panel {
width: 90%;
height: 540px;
align: center;
}textarea {
font-size: 22px;
}.right {
width: 50%;
height: 100%;
background: deepskyblue;
position: relative;
float: right;
}
下面将显示出您的代码的执行结果
callpy.php 这里的调用外部代码需要的功能很简单,所以就选择了
system
函数啦。
temp.py
temp.py
说白了就是个临时文件,所以每次代码被运行的时候都会被更新一遍。所以里面的内容不重要了。下面给出我测试过一次之后的temp.py
的文件内容。#coding:utf8
print "Hello 郭璞"
from time import *
print ctime()
演示 下面就是激动人心的测试界面啦。
首页
文章图片
首页部分 提示信息
点击左侧上方的“Python代码”的时候,会给出一点提示信息。如:
文章图片
提示信息 简要测试
此在线编辑工具可以方便的进行Python脚本的编写。只要是符合正规的Python语法的,都是可以的。
运行等待 当编写的Python脚本比较的耗时的时候,前台需要给出提示信息,并进行等待。所以最好的方式就是显示一条“程序正在运行中··· ···”,这样既能给用户更好的体验,也能体现更加人性化的设计。
文章图片
耗时任务
文章图片
耗时任务结束后的结果显示 高级测试
文章图片
高级测试 错误提示
上面全是介绍,代码正常运行的结果。但是很多时候我们并不能一下子就编写出bug free 的代码,所以适时的给出点提示是个不错的选择。但是这里给的建议就是自主发现错误,亲自手动的检查自己的代码,更能养成规范的代码编写习惯。
文章图片
脚本出现错误时 总结 回顾一下,本次的实验核心就在于PHP调用外部程序的两个简单的方式。虽然各有利弊,但是找到合适的场景进行选择的话,还是能取得不错的效果的。
其实上面的全是些无关痛痒的话题啦。真正有用的是整合起来,PHP在网站开发上面有Python不可比拟的优势(虽然Python写起网站来一点也不虚)。但是Python的灵活又是PHP不可替代的。
通过今天这个测试,也不难想到了吧。倘若能恰当的将这两者进行整合,想必一定能做出一个既优雅,又高效的系统。
最后,我把这个工具上传到了自己的服务器上了。如果有想练习PHP语法,Python语法的意愿,可以和我取得联系。
【在线|在线 Python运行工具】联系方式在左侧的友情链接处可以找到。(__) 嘻嘻……
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 在线版的迅捷思维导图怎么操作()
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)