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 相关文章推荐
python 提取文件的小程序
Jul 29 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
python实现媒体播放器功能
Feb 11 Python
解决pycharm界面不能显示中文的问题
May 23 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
python实现五子棋小游戏
Mar 25 Python
Python常用的json标准库
Feb 19 Python
Django用户认证系统 User对象解析
Aug 02 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
Python实现Kerberos用户的增删改查操作
Dec 14 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
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
Python中字符串的格式化方法小结
2016/05/03 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
python实现用户管理系统
2018/01/10 Python
tornado 多进程模式解析
2018/01/15 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
Python内置异常类型全面汇总
2020/05/28 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
奶茶专卖店创业计划书
2014/01/18 职场文书
制作部班长职位说明书
2014/02/26 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis