python如何使用代码运行助手


Posted in Python onJuly 03, 2020

python代码运行助手是能在网页上运行python语言的工具。因为python的运行环境在很多教程里都是用dos的,黑乎乎的界面看的有点简陋,所以出了这python代码运行助手,作为ide。

实际上,python代码运行助手界面只能算及格分,如果要找ide,推荐使用jupyter。jupyter被集成到ANACONDA里,只要安装了anacoda就能使用了。

1、要打开这运行助手首先要下载一个learning.py,如果找不到可以复制如下代码另存为“learning.py”,编辑器用sublime、或者notepad++。

#!/usr/bin/env python3
# -*- coding: utf-8 -*- 
r'''
learning.py 
A Python 3 tutorial from http://www.liaoxuefeng.com 
Usage: 
python3 learning.py
''' 
import sys
 
def check_version():
    v = sys.version_info
    if v.major == 3 and v.minor >= 4:
        return True
    print('Your current python is %d.%d. Please use Python 3.4.' % (v.major, v.minor))
    return False
 
if not check_version():
    exit(1)
 
import os, io, json, subprocess, tempfile
from urllib import parse
from wsgiref.simple_server import make_server
 
EXEC = sys.executable
PORT = 39093
HOST = 'local.liaoxuefeng.com:%d' % PORT
TEMP = tempfile.mkdtemp(suffix='_py', prefix='learn_python_')
INDEX = 0
 
def main():
    httpd = make_server('127.0.0.1', PORT, application)
    print('Ready for Python code on port %d...' % PORT)
    httpd.serve_forever()
 
def get_name():
    global INDEX
    INDEX = INDEX + 1
    return 'test_%d' % INDEX
 
def write_py(name, code):
    fpath = os.path.join(TEMP, '%s.py' % name)
    with open(fpath, 'w', encoding='utf-8') as f:
        f.write(code)
    print('Code wrote to: %s' % fpath)
    return fpath
 
def decode(s):
    try:
        return s.decode('utf-8')
    except UnicodeDecodeError:
        return s.decode('gbk')
 
def application(environ, start_response):
    host = environ.get('HTTP_HOST')
    method = environ.get('REQUEST_METHOD')
    path = environ.get('PATH_INFO')
    if method == 'GET' and path == '/':
        start_response('200 OK', [('Content-Type', 'text/html')])
        return [b'<html><head><title>Learning Python</title></head><body><form method="post" action="/run">
        <textarea name="code" style="width:90%;height: 600px"></textarea><p><button type="submit">Run</button>
        </p></form></body></html>']
    if method == 'GET' and path == '/env':
        start_response('200 OK', [('Content-Type', 'text/html')])
        L = [b'<html><head><title>ENV</title></head><body>']
        for k, v in environ.items():
            p = '<p>%s = %s' % (k, str(v))
            L.append(p.encode('utf-8'))
        L.append(b'</html>')
        return L
    if host != HOST or method != 'POST' or path != '/run' or not environ.get('CONTENT_TYPE', '').lower().
    startswith('application/x-www-form-urlencoded'):
        start_response('400 Bad Request', [('Content-Type', 'application/json')])
        return [b'{"error":"bad_request"}']
    s = environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
    qs = parse.parse_qs(s.decode('utf-8'))
    if not 'code' in qs:
        start_response('400 Bad Request', [('Content-Type', 'application/json')])
        return [b'{"error":"invalid_params"}']
    name = qs['name'][0] if 'name' in qs else get_name()
    code = qs['code'][0]
    headers = [('Content-Type', 'application/json')]
    origin = environ.get('HTTP_ORIGIN', '')
    if origin.find('.liaoxuefeng.com') == -1:
        start_response('400 Bad Request', [('Content-Type', 'application/json')])
        return [b'{"error":"invalid_origin"}']
    headers.append(('Access-Control-Allow-Origin', origin))
    start_response('200 OK', headers)
    r = dict()
    try:
        fpath = write_py(name, code)
        print('Execute: %s %s' % (EXEC, fpath))
        r['output'] = decode(subprocess.check_output([EXEC, fpath], stderr=subprocess.STDOUT, timeout=5))
    except subprocess.CalledProcessError as e:
        r = dict(error='Exception', output=decode(e.output))
    except subprocess.TimeoutExpired as e:
        r = dict(error='Timeout', output='执行超时')
    except subprocess.CalledProcessError as e:
        r = dict(error='Error', output='执行错误')
    print('Execute done.')
    return [json.dumps(r).encode('utf-8')]
 
if __name__ == '__main__':
    main()

2、再用一个记事本写如下的代码:

@echo off
python learning.py
pause

另存为‘运行.bat'

3、把“运行.bat”和“learning.py”放到同一目录下。

python如何使用代码运行助手

4、双击运行“运行.bat",之后会弹出黑色的dos窗口,这个窗口不要关闭。

python如何使用代码运行助手

5、输入网址对应的网址和端口,整个过程就完成了。

python如何使用代码运行助手

知识点扩展:

Python在线运行代码助手

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
r'''
learning.py
 
A Python 3 tutorial from http://www.liaoxuefeng.com
 
Usage:
 
python3 learning.py
'''
 
import sys
 
def check_version():
 v = sys.version_info
 if v.major == 3 and v.minor >= 4:
 return True
 print('Your current python is %d.%d. Please use Python 3.4.' % (v.major,v.minor))
 return False
 
if not check_version():
 exit(1)
 
import os,io,json,subprocess,tempfile
from urllib import parse
from wsgiref.simple_server import make_server
 
EXEC = sys.executable
PORT = 39093
HOST = 'local.liaoxuefeng.com:%d' % PORT
TEMP = tempfile.mkdtemp(suffix='_py',prefix='learn_python_')
INDEX = 0
 
def main():
 httpd = make_server('127.0.0.1',PORT,application)
 print('Ready for Python code on port %d...' % PORT)
 httpd.serve_forever()
 
def get_name():
 global INDEX
 INDEX = INDEX + 1
 return 'test_%d' % INDEX
 
def write_py(name,code):
 fpath = os.path.join(TEMP,'%s.py' % name)
 with open(fpath,'w',encoding='utf-8') as f:
 f.write(code)
 print('Code wrote to: %s' % fpath)
 return fpath
 
def decode(s):
 try:
 return s.decode('utf-8')
 except UnicodeDecodeError:
 return s.decode('gbk')
 
def application(environ,start_response):
 host = environ.get('HTTP_HOST')
 method = environ.get('REQUEST_METHOD')
 path = environ.get('PATH_INFO')
 if method == 'GET' and path == '/':
 start_response('200 OK',[('Content-Type','text/html')])
 return [b'<html><head><title>Learning Python</title></head><body><form method="post" action="/run"><textarea name="code" style="width:90%;height: 600px"></textarea><p><button type="submit">Run</button></p></form></body></html>']
 if method == 'GET' and path == '/env':
 start_response('200 OK','text/html')])
 L = [b'<html><head><title>ENV</title></head><body>']
 for k,v in environ.items():
  p = '<p>%s = %s' % (k,str(v))
  L.append(p.encode('utf-8'))
 L.append(b'</html>')
 return L
 if host != HOST or method != 'POST' or path != '/run' or not environ.get('CONTENT_TYPE','').lower().startswith('application/x-www-form-urlencoded'):
 start_response('400 Bad Request','application/json')])
 return [b'{"error":"bad_request"}']
 s = environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
 qs = parse.parse_qs(s.decode('utf-8'))
 if not 'code' in qs:
 start_response('400 Bad Request','application/json')])
 return [b'{"error":"invalid_params"}']
 name = qs['name'][0] if 'name' in qs else get_name()
 code = qs['code'][0]
 headers = [('Content-Type','application/json')]
 origin = environ.get('HTTP_ORIGIN','')
 if origin.find('.liaoxuefeng.com') == -1:
 start_response('400 Bad Request','application/json')])
 return [b'{"error":"invalid_origin"}']
 headers.append(('Access-Control-Allow-Origin',origin))
 start_response('200 OK',headers)
 r = dict()
 try:
 fpath = write_py(name,code)
 print('Execute: %s %s' % (EXEC,fpath))
 r['output'] = decode(subprocess.check_output([EXEC,fpath],stderr=subprocess.STDOUT,timeout=5))
 except subprocess.CalledProcessError as e:
 r = dict(error='Exception',output=decode(e.output))
 except subprocess.TimeoutExpired as e:
 r = dict(error='Timeout',output='执行超时')
 except subprocess.CalledProcessError as e:
 r = dict(error='Error',output='执行错误')
 print('Execute done.')
 return [json.dumps(r).encode('utf-8')]
 
if __name__ == '__main__':
 main()

到此这篇关于python如何使用代码运行助手的文章就介绍到这了,更多相关python代码运行助手用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Django的通用视图中处理Context的方法
Jul 21 Python
详解Python3中yield生成器的用法
Aug 20 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
python找出因数与质因数的方法
Jul 25 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
python如何查看网页代码
Jun 07 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
python palywright库基本使用
Jan 21 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 #Python
python3 简单实现组合设计模式
Jul 02 #Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 #Python
django 装饰器 检测登录状态操作
Jul 02 #Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 #Python
django 实现后台从富文本提取纯文本
Jul 02 #Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 #Python
You might like
牡丹941资料
2021/03/01 无线电
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
jquery $.ajax入门应用一
2008/11/19 Javascript
javascript 操作文件 实现方法小结
2009/07/02 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
Python+微信接口实现运维报警
2016/08/27 Python
Django开发中复选框用法示例
2018/03/20 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python学生管理系统
2019/01/30 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
《雾凇》教学反思
2014/02/17 职场文书
小学运动会班级口号
2014/06/09 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
利用JavaScript写一个简单计算器
2021/11/27 Javascript