python语言在线编译器,python编译器使用教程

  python语言在线编译器,python编译器使用教程

  今天没事儿完了一下菜鸟教程的大蟒编译器发现挺有意思,想搞明白它的原理是啥,于是我输入了以下代码:

  导入操作系统打印(系统。版本信息)打印(系统。可执行)打印(系统。路径[0])打印(操作系统。listdir(sys。path[0]),并打开(/usercode/file)。py )作为e:print(e . read())结果是这样的:

  我个人推测,它是将邮政请求的代码数据写入了服务器的一个文件,然后用服务器的大蟒编译器执行返回结果

  于是我自己简单实现一个

  目录结构:

  在线执行

   - zxby.py

   -应用程序

   - flaskrun.py

  zxby.py代码实现:

  # -*-编码:utf-8 -*-#__author__=ZJL 导入操作系统,系统,子进程,临时文件,时间#创建临时文件夹,返回临时文件夹路径TempFile=tempfile.mkdtemp(后缀=_test ,前缀=python_)#文件名FileNum=int(time。time()* 1000)# python编译器位置EXEC=sys.executable#获取大蟒版本def get _ version():v=sys。version _ info version= python % s . % s %(主要版本,次要版本)返回版本#获得巴拉圭文件名def get_pyname():全局FileNum返回测试_ % d“% FileNum #接收代码写入文件def write_file(pyname,code):fpath=OS。路径。join(TempFile, % s . py % pyname )与open(fpath, w ,encoding= utf-8 )as f:f . write(code)print(文件路径:% s“% fpath”)返回fpath#编码def decode:try:return s . decode( utf-8 )除unicode解码错误:return s . decode( gbk )#主执行函数def main(code):r=dict()r[ version ]=get _ version()pyname=get _ pyname()fpath=write _ file(pyname,code)try:# subprocess。检查_输出是父进程等待子进程完成,返回子进程向标准输出的输出结果# stderr是标准输出的类型输出数据=解码(子过程。check _ output([EXEC,fpath),stderr=子进程.STDOUT,timeout=5))子进程除外。调用了过程误差作为e: # e .输出是错误信息标准输出# 错误返回的数据r[ code ]= Error r[ output ]=decode(e . output)return r else:#成功返回的数据r[输出]=输出数据r[代码]=成功最后返回r:#删除文件(其实不用删除临时文件会自动删除)试试:OS。将(fpath)异常删除为e:exit(1)# if _ _ name _ _= _ _ main _ _ :# code= print(你好)“”“#打印(主(代码))

  flaskrun.py代码实现:# -*-编码:utf-8-*-# _ _ author _ _= ZJL from Flask import Flask import request from Flask import Response import JSON import zxbyapp=Flask(_ _ name _ _)def Response _ headers(content):resp=Response(content)resp。headers[ Access-Control-Allow-Origin ]= * 返回resp @ app。route(/)def hello _ world():return Response _ headers( hello world!)@app.route(/run ,methods=[ POST ])def run():if request。方法== POST 和请求。格式[ code ]:code=request。form[ code ]print(code)JSON data=zxby。main(code)返回Response _ headers(str(JSON data))@ app。错误处理程序(403)def page _ not _ found(错误):content=JSON。转储({ 错误代码: 403 })resp=Response _ headers(内容)返回

  打开邮递员测试:

  正确的代码测试:

  错误代码测试:

  大致就是这样。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写
  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写,python语言基本语句用法总结
  • python是一种什么类型的计算机语言,python语言是一种什么类型的编程语言
  • Python的保留字符,python语言中的保留字
  • python的指数e怎么表示,指数函数在python语言中怎么表示
  • python语言合法的变量命名,在python中变量的命名要注意哪些问题
  • python变量命名可以用中文吗,下面哪一个不是python语言合法的变量命名
  • Python分词库,用python语言中文分词第三方库jieba对文件data
  • python中复数类型的实部和虚部都是浮点数,python语言中,复数类型中实数部分和虚数部分
  • 用python语言判断一个数是否为素数,Python判断是不是素数
  • python语句变量命名规则,python语言命名变量规则
  • 简述python语言程序的特点,以下关于python语言技术特点
  • matlab中for循环的用法例子,python语言for循环语句
  • Python主网站,python语言的官方网站
  • 用python开发的软件有哪些,哪些工具可以使用python语言开发软件
  • 留言与评论(共有 条评论)
       
    验证码: