python.编译器,python编译器使用教程

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: