python.编译器,python编译器使用教程
我们先来看一下效果(简单的写了一个):
原理:将邮政请求的代码数据写入了服务器的一个文件,然后用服务器的大蟒编译器执行返回结果
实现代码:
#flaskrun.py
# -*-编码:utf-8 -*-
# __author__=ZJL
从烧瓶进口烧瓶
从烧瓶导入请求
从烧瓶导入响应
导入数据
导入zxby
app=Flask(__name__)
定义响应标题(内容):
resp=响应(内容)
resp。头[ Access-Control-Allow-Origin ]= *
退货责任
@app.route(/)
def hello_world():
return Response _ headers( hello world!)
@app.route(/run ,methods=[POST])
定义运行():
if request.method==POST 和request.form[code]:
code=request.form[code]
打印(代码)
jsondata=zxby.main(代码)
返回Response_headers(str(jsondata))
@app.errorhandler(403)
定义未找到的页面(错误):
内容=JSON。转储({ 错误代码: 403 })
resp=响应标题(内容)
退货责任
@app.errorhandler(404)
定义未找到的页面(错误):
内容=JSON。转储({ 错误代码: 404 })
resp=响应标题(内容)
退货责任
@app.errorhandler(400)
定义未找到的页面(错误):
内容=JSON。转储({ 错误代码: 400 })
resp=响应标题(内容)
退货责任
@app.errorhandler(405)
定义未找到的页面(错误):
内容=JSON。转储({ 错误代码: 405 })
resp=响应标题(内容)
退货责任
@app.errorhandler(410)
定义未找到的页面(错误):
内容=JSON。转储({ 错误代码: 410 })
resp=响应标题(内容)
退货责任
@app.errorhandler(500)
定义未找到的页面(错误):
内容=JSON。转储({ 错误代码: 500 })
resp=响应标题(内容)
退货责任
if __name__==__main__ :
app.run(调试=真)
#zxby.py
# -*-编码:utf-8 -*-
# __author__=ZJL
导入操作系统、系统、子流程、临时文件、时间
# 创建临时文件夹,返回临时文件夹路径
TempFile=tempfile.mkdtemp(后缀=_test ,前缀=python_ )
# 文件名
FileNum=int(time.time() * 1000)
# python编译器位置
EXEC=sys.executable
# 获取大蟒版本
极好的获取版本():
v=sys.version_info
version=python %s.%s % (v.major,v.minor)
返回版本
# 获得巴拉圭文件名
def get_pyname():
全局文件数
返回测试_ % d“% FileNum”
# 接收代码写入文件
def write_file(pyname,code):
fpath=os.path.join(临时文件, %s.py % pyname )
用open(fpath, w ,编码=utf-8 )作为女:
f .写(代码)
打印("文件路径:% s“% fpath”)
返回路径
# 编码
定义解码:
尝试:
返回s . decode(“utf-8”)
除了UnicodeDecodeError错误:
返回美国解码( gbk )
# 主执行函数
定义主(代码):
r=dict()
r[version]=get_version()
pyname=get_pyname()
fpath=write_file(pyname,code)
尝试:
#子流程。检查_输出是父进程等待子进程完成,返回子进程向标准输出的输出结果
# stderr是标准输出的类型
输出数据=解码(子过程。check _ output([EXEC,fpath),stderr=子进程.STDOUT,timeout=5))
除了子流程。作为e调用了进程错误:
#输出是错误信息标准输出
# 错误返回的数据
r[code]=Error
r[输出]=解码(e。输出)
返回r
否则:
# 成功返回的数据
r[output]=outdata
r[code]=成功
返回r
最后:
# 删除文件(其实不用删除临时文件会自动删除)
尝试:
os.remove(fpath)
例外情况为e:
出口(1)
if __name__==__main__ :
code= print(11);打印(22)
打印(主代码)
运行app.run()方法,通过邮政提交代码,就好的了。我们可以对输出结过做进一步的处理,我这只是为了解一下原理,就没继续了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。