精华内容
下载资源
问答
  • python 在线编译器

    千次阅读 2019-02-20 16:49:33
    # python编译器位置 self.EXEC = sys.executable # 获取python版本 def get_version(self): v = sys.version_info version = "python %s.%s" % (v.major, v.minor) return version # 获得py文件名 def ...
    import os, sys, subprocess, time
    
    
    class AdvanceQuery(object):
        def __init__(self):
            self.TempFile = "media/advance_query"
            # 文件名
            self.FileNum = int(time.time() * 1000)
            # python编译器位置
            self.EXEC = sys.executable
    
        # 获取python版本
        def get_version(self):
            v = sys.version_info
            version = "python %s.%s" % (v.major, v.minor)
            return version
    
        # 获得py文件名
        def get_pyname(self):
            return '%d' % self.FileNum
    
        # 接收代码写入文件
        def write_file(self, pyname, code):
            if not os.path.exists(self.TempFile):
                os.mkdir(self.TempFile)
            fpath = os.path.join(self.TempFile, '%s.py' % pyname)
            with open(fpath, 'w', encoding='utf-8') as f:
                f.write(code)
            # print('file path: %s' % fpath)
            return fpath
    
        # 编码
        def decode(self, s):
            try:
                return s.decode('utf-8')
            except UnicodeDecodeError:
                return s.decode('gbk')
    
        def query_main(self, code):
            r = dict()
            r["version"] = self.get_version()
            pyname = self.get_pyname()
            fpath = self.write_file(pyname, code)
            try:
                # subprocess.check_output 是 父进程等待子进程完成,返回子进程向标准输出的输出结果
                # stderr是标准输出的类型
                """subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
                父进程直接创建子进程执行程序,以字符串的形式返回子进程的输出。"""
                outdata = self.decode(subprocess.check_output([self.EXEC, fpath], stderr=subprocess.STDOUT, timeout=5))
            except subprocess.CalledProcessError as e:
                # e.output是错误信息标准输出
                # 错误返回的数据
                r["code"] = 'Error'
                r["output"] = self.decode(e.output)
                return r
            else:
                # 成功返回的数据
                r['output'] = outdata
                r["code"] = "Success"
                return r
            finally:
                # 删除文件(其实不用删除临时文件会自动删除)
                try:
                    os.remove(fpath)
                except Exception as e:
                    exit(1)
    
        # 显示csv列表
        def csv_list(self):
            path = os.getcwd()
            alist = []
            for i in os.listdir(os.path.join(path, "csv")):
                # print(os.path.join(path, "csv"))
                if i.split(".")[1] == "csv":
                    alist.append(i)
            data = {"csv_list": alist}
            return data
    
        # 根据csv返回相应语句显示
        def show_statement(self, st):
            if st:
                data = 'import pandas as pd\ndp = pd.read_csv("csv/%s")' % st
                return data
    

     

    展开全文
  • 主要介绍了python在线编译器的简单原理及简单实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 我们先来看一下效果(简单的写了一个):原理:将post请求的代码数据写入了服务器的一个文件,然后用服务器的python编译器执行返回结果实现代码:#flaskrun.py# -*- coding: utf-8 -*-# __author__="ZJL"...

    我们先来看一下效果(简单的写了一个):

    原理:将post请求的代码数据写入了服务器的一个文件,然后用服务器的python编译器执行返回结果

    实现代码:

    #flaskrun.py

    # -*- coding: utf-8 -*-

    # __author__="ZJL"

    from flask import Flask

    from flask import request

    from flask import Response

    import json

    import zxby

    app = Flask(__name__)

    def Response_headers(content):

    resp = Response(content)

    resp.headers['Access-Control-Allow-Origin'] = '*'

    return resp

    @app.route('/')

    def hello_world():

    return Response_headers('hello world!!!')

    @app.route('/run', methods=['POST'])

    def run():

    if request.method == 'POST' and request.form['code']:

    code = request.form['code']

    print(code)

    jsondata = zxby.main(code)

    return Response_headers(str(jsondata))

    @app.errorhandler(403)

    def page_not_found(error):

    content = json.dumps({"error_code": "403"})

    resp = Response_headers(content)

    return resp

    @app.errorhandler(404)

    def page_not_found(error):

    content = json.dumps({"error_code": "404"})

    resp = Response_headers(content)

    return resp

    @app.errorhandler(400)

    def page_not_found(error):

    content = json.dumps({"error_code": "400"})

    resp = Response_headers(content)

    return resp

    @app.errorhandler(405)

    def page_not_found(error):

    content = json.dumps({"error_code": "405"})

    resp = Response_headers(content)

    return resp

    @app.errorhandler(410)

    def page_not_found(error):

    content = json.dumps({"error_code": "410"})

    resp = Response_headers(content)

    return resp

    @app.errorhandler(500)

    def page_not_found(error):

    content = json.dumps({"error_code": "500"})

    resp = Response_headers(content)

    return resp

    if __name__ == '__main__':

    app.run(debug=True)

    #zxby.py

    # -*- coding: utf-8 -*-

    # __author__="ZJL"

    import os, sys, subprocess, tempfile, time

    # 创建临时文件夹,返回临时文件夹路径

    TempFile = tempfile.mkdtemp(suffix='_test', prefix='python_')

    # 文件名

    FileNum = int(time.time() * 1000)

    # python编译器位置

    EXEC = sys.executable

    # 获取python版本

    def get_version():

    v = sys.version_info

    version = "python %s.%s" % (v.major, v.minor)

    return version

    # 获得py文件名

    def get_pyname():

    global FileNum

    return 'test_%d' % FileNum

    # 接收代码写入文件

    def write_file(pyname, code):

    fpath = os.path.join(TempFile, '%s.py' % pyname)

    with open(fpath, 'w', encoding='utf-8') as f:

    f.write(code)

    print('file path: %s' % fpath)

    return fpath

    # 编码

    def decode(s):

    try:

    return s.decode('utf-8')

    except UnicodeDecodeError:

    return s.decode('gbk')

    # 主执行函数

    def main(code):

    r = dict()

    r["version"] = get_version()

    pyname = get_pyname()

    fpath = write_file(pyname, code)

    try:

    # subprocess.check_output 是 父进程等待子进程完成,返回子进程向标准输出的输出结果

    # stderr是标准输出的类型

    outdata = decode(subprocess.check_output([EXEC, fpath], stderr=subprocess.STDOUT, timeout=5))

    except subprocess.CalledProcessError as e:

    # e.output是错误信息标准输出

    # 错误返回的数据

    r["code"] = 'Error'

    r["output"] = decode(e.output)

    return r

    else:

    # 成功返回的数据

    r['output'] = outdata

    r["code"] = "Success"

    return r

    finally:

    # 删除文件(其实不用删除临时文件会自动删除)

    try:

    os.remove(fpath)

    except Exception as e:

    exit(1)

    if __name__ == '__main__':

    code = "print(11);print(22)"

    print(main(code))

    运行app.run()方法,通过post提交代码,就ok了。我们可以对输出结过做进一步的处理,我这只是为了解一下原理,就没继续了。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 1.python在线编译器的解决方案 方案一:vscode web版(vscode online) 大名鼎鼎的vscode 推出了web版,也就是说可以在网页上进行编程了。 github地址:https://github.com/microsoft/vscode 可以按照他的教程进行...

    原文链接

    1.python在线编译器的解决方案

    方案一:vscode web版(vscode online)
    大名鼎鼎的vscode 推出了web版,也就是说可以在网页上进行编程了。
    github地址:https://github.com/microsoft/vscode
    可以按照他的教程进行部署搭建到自己的服务器上。后期我也会写一个搭建部署过程。
    PS:国内腾讯收购了coding。然后变成了现在的coding.net。
    传送门:https://coding.net/
    他里面的coding studio 和vsconde 简直一毛一样。
    在这里插入图片描述
    方案二:Anaconda
    Anoconda 包含了一个包管理工具和一个Python管理环境,同时附带了一大批常用数据科学包,也是数据分析的标配。其中里面的jupyter notebook 可以实现在线编写python的功能。
    在这里插入图片描述
    以上方案都不能满足的我要求,我和核心要求之一是要实现python turtle 画图。所以最终选择了Skulpt。
    Skulpt是一个完全依靠浏览器端模拟实现Python运行的工具。可以依靠浏览器搭建出在线python编译器。
    在线测试地址:http://python.longkui.site
    在这里插入图片描述

    2. 下载Skulpt与安装

    GitHub地址:https://github.com/skulpt/skulpt
    主要是需要dist目录下的skulpt.min.js 和skulpt-stdlib.js 这两个文件
    如果链接丢失或者没有相关文件可以用下面的:

    https://box356.lanzous.com/ihev5hvuged

    在这里插入图片描述
    dist 目录下还有一个index 文件,这个就是启动文件。如果我们双击运行后,界面是这样的:

    在这里插入图片描述
    这便是一个最基础的界面。但是还有问题, 这个时候你在这里面写python代码并点击“Run”是会报错的。主要原因是因为引用问题
    在这里插入图片描述
    引用部分如下:

    <script src="../skulpt.min.js" type="text/javascript"></script> 
    <script src="../skulpt-stdlib.js" type="text/javascript"></script> 
    
    将代码中的第9行和第10行修改为如下形式:
    
    

    这个时候再运行index.html,并在框中输入python 代码点击运行便可出现效果。

    在这里插入图片描述

    展开全文
  • python在线编译器简单实现

    万次阅读 2019-03-12 18:48:56
    因为项目,需要在网页中嵌入编译器。这个分为两部分,前端单独编译器及后端flask服务,前端... 看到菜鸟教程的python编译器发现挺有意思,想搞明白它的原理是啥,于是我输入了以下代码: import sys,os...

    因为项目,需要在网页中嵌入编译器。这个分为两部分,前端单独编译器及后端flask服务,前端编译器部分可参考:https://blog.csdn.net/qq_37193537/article/details/88426196,里面有源码,后端部分参考一下:

    看到菜鸟教程的python编译器发现挺有意思,想搞明白它的原理是啥,于是我输入了以下代码:

     

    
     
    1. import sys,os

    2. print(sys.version_info)

    3. print(sys.executable)

    4. print(sys.path[0])

    5. print(os.listdir(sys.path[0]))

    6. with open("/usercode/file.py") as e:

    7. print(e.read())

    结果是这样的:

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

     

    于是我自己简单实现一个

    目录结构:

    OnlineEXEC

    |----zxby.py

    |----app

            |----flaskrun.py

     

    zxby.py代码实现:

    # -*- coding: utf-8 -*-
    # __author__="ZJL"
    
    from flask import Flask
    from flask import request
    from flask import Response
    import json
    import demo02_2
    
    app = Flask(__name__)
    
    
    def Response_headers(content):
        resp = Response(content)
        resp.headers['Access-Control-Allow-Origin'] = '*'
        return resp
    
    
    @app.route('/')
    def hello_world():
        return Response_headers('hello world!!!')
    
    
    @app.route('/run', methods=['POST'])
    def run():
        if request.method == 'POST' and request.form['code']:
            code = request.form['code']
            jsondata = demo02_2.main(code)
            return Response_headers(str(jsondata))
    
    
    @app.errorhandler(403)
    def page_not_found(error):
        content = json.dumps({"error_code": "403"})
        resp = Response_headers(content)
        return resp
    
    
    @app.errorhandler(404)
    def page_not_found(error):
        content = json.dumps({"error_code": "404"})
        resp = Response_headers(content)
        return resp
    
    
    @app.errorhandler(400)
    def page_not_found(error):
        content = json.dumps({"error_code": "400"})
        resp = Response_headers(content)
        return resp
    
    
    @app.errorhandler(405)
    def page_not_found(error):
        content = json.dumps({"error_code": "405"})
        resp = Response_headers(content)
        return resp
    
    
    @app.errorhandler(410)
    def page_not_found(error):
        content = json.dumps({"error_code": "410"})
        resp = Response_headers(content)
        return resp
    
    
    @app.errorhandler(500)
    def page_not_found(error):
        content = json.dumps({"error_code": "500"})
        resp = Response_headers(content)
        return resp
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    flaskrun.py代码实现:

    # zxby.py
    # -*- coding: utf-8 -*-
    # __author__="ZJL"
    
    import os, sys, subprocess, tempfile, time
    
    # 创建临时文件夹,返回临时文件夹路径
    TempFile = tempfile.mkdtemp(suffix='_test', prefix='python_')
    # 文件名
    FileNum = int(time.time() * 1000)
    # python编译器位置
    EXEC = sys.executable
    
    
    # 获取python版本
    def get_version():
        v = sys.version_info
        version = "python %s.%s" % (v.major, v.minor)
        return version
    
    
    # 获得py文件名
    def get_pyname():
        global FileNum
        return 'test_%d' % FileNum
    
    
    # 接收代码写入文件
    def write_file(pyname, code):
        fpath = os.path.join(TempFile, '%s.py' % pyname)
        with open(fpath, 'w', encoding='utf-8') as f:
            f.write(code)
        print('file path: %s' % fpath)
        return fpath
    
    
    # 编码
    def decode(s):
        try:
            return s.decode('utf-8')
        except UnicodeDecodeError:
            return s.decode('gbk')
    
            # 主执行函数
    
    
    def main(code):
        r = dict()
        r["version"] = get_version()
        pyname = get_pyname()
        fpath = write_file(pyname, code)
        try:
            # subprocess.check_output 是 父进程等待子进程完成,返回子进程向标准输出的输出结果
            # stderr是标准输出的类型
            outdata = decode(subprocess.check_output([EXEC, fpath], stderr=subprocess.STDOUT, timeout=10))
        except subprocess.CalledProcessError as e:
            # e.output是错误信息标准输出
            # 错误返回的数据
            r["code"] = 'Error'
            r["output"] = decode(e.output)
            return r
        else:
            # 成功返回的数据
            r['output'] = outdata
            r["code"] = "Success"
            return r
        finally:
            # 删除文件(其实不用删除临时文件会自动删除)
            try:
                os.remove(fpath)
            except Exception as e:
                exit(1)
    
    
    if __name__ == '__main__':
        code = "print(11);print(12)"
        print(main(code))
    

    打开postman测试:

    正确代码测试:

     

    错误代码测试:

     

    大致就是这样的

    from:https://blog.csdn.net/u013055678/article/details/73896477/

    展开全文
  • 原理:将post请求的代码数据写入了服务器的一个文件,然后用服务器的python编译器执行返回结果 实现代码: #flaskrun.py # -*- coding: utf-8 -*- # __author__="ZJL" from flask import Flask ...
  • Python 3 教程Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。Python 介绍及安装教程...
  • 今天没事儿完了一下菜鸟教程的python编译器发现挺有意思,想搞明白它的原理是啥,于是我输入了以下代码: import sys,os print(sys.version_info) print(sys.executable) print(sys.path[0]) print(os.listdir(sys....
  • 一、解释型语言pythonpython语言是一种解释型、面向对象、动态数据类型的高级程序设计语言。 ? 编译型语言 先整体编译,再执行 运行速度快, 任意改动需重新编译 可脱离编译环境运行 解释性语言 边解释,边执行 运行...
  • 一、安装python3(Ubuntu上面是自带python编译器的,可以用命令"python -V“来查看版本号。我下面安装的是pyhton3编译器)一条命令就可以sudo apt-get install python3安装之后再安一个python3-pip,要不然之后会...
  • 一、解释型语言pythonpython语言是一种解释型、面向对象、动态数据类型的高级程序设计语言。 ? 编译型语言 先整体编译,再执行 运行速度快, 任意改动需重新编译 可脱离编译环境运行 解释性语言 边解释,边执行 运行...
  • Python是一个非常好用的程序语言,开发的速度非常快。Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的...
  • Python编译器

    千次阅读 2018-06-20 19:10:40
    Python有许多编译器,下面来介绍一些Python编译器:1.AnacondaAnaconda是一个比较热门的编译器,它有很多种编译器,列如Jupyter等等下载网址2.pycharmpycharm有两个版本,一个是社区版(community),还有一个是专业版...
  • Python常见编译器盘点

    万次阅读 多人点赞 2019-08-24 18:20:55
    俗话说:工欲善其事必先利其器,想要写Python脚本,肯定要有合适的Python编译器,目前市面上的Python编译器还是比较多的,那么各种不同的编译器又有哪些独特的特点呢?本文来盘点一下目前最常用的几款编译器。 一、...
  • lesscpy:Python LESS编译器
  • python 2.7.1编译器源代码

    热门讨论 2010-12-04 13:37:36
    虽然现在有许多python的书,但python编译器等软件却不多,这是python 2.7.1编译器源代码
  • Numba是NumPy感知的Python优化编译器。它使用LLVM编译器项目从Python语法生成机器代码。
  • 现在互联网发展迅速发展,很多人开始往it行业发展,我给你们推荐一款很好的软件,Python编译器手机版主要为Python初学者提供直接运行的功能,能够随手验证一些小程序,Python编译器app支持直接从文件管理器中打开...
  • 在本文中,我们将浏览各种狂野的在线Python编译器,其中大多数是免费的,我们还列出了一些,它们是有价的,主要用于大型项目开发。在线Python编译器的功能和使用?通常提供的功能范围从简单的外壳到功能齐全的Python...
  • Python语言编译器

    2006-02-23 09:05:59
    Python语言编译器
  • Numba是NumPy感知的Python优化编译器。它使用LLVM编译器项目从Python语法生成机器代码。 Numba 用于 Python 中数值函数的即时编译器 Numba 是一个开源的、支持 NumPy 的 Python 优化编译器,由 Anaconda, Inc. 赞助...
  • CMP 这是python编译器MATLAB
  • python 3.1.3编译器源代码,给需要的人一个参考
  • Python2.5编译器

    2010-03-04 13:24:47
    python编译器,很强大的工具。官方不是很好下啊
  • Python官方编译器的安装

    千次阅读 2019-08-24 22:20:47
    Python官方编译器的安装: 1.进入Python官网:https://www.python.org/,然后下载Python即可。 提供百度云下载: 链接:https://pan.baidu.com/s/1IRhc2_F7GHdU3hZFdI_wmw 提取码:e8ti 2.双击直接运行 3...
  • 在这里跟介绍一下现在市面上比较主流的 Python 编辑器供参考,要知道,适合自己的才是好的。1. Sublime TextSublime Text 比较适合 Python 新手使用,Sublime Text支持跨平台,而且可以使用其丰富的插件和主题。各种...
  • Python3编译器的安装

    2020-09-21 23:21:55
    Python3.8.2编译器的安装 在Python的官方网站 https://python.org/上可以下载到所有版本的Python官方工具。 安装以官方的3.8.2版本为例 ![在 首先,这里注意是否要勾选Add Python 3.8 to PATH选项,勾选这个选项安装...
  • python设置编译器

    千次阅读 2019-05-17 10:49:58
    pycharm 设置编译器 python路径 打开我们的cmd命令 输入Python 输入 import sys 输入 print(sys.path) >>> import sys >>> sys.path
  • python-grako:Python语法编译器,EBNF输入,PEGPackrat解析器输出

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,145
精华内容 48,458
关键字:

python在线编译器

python 订阅