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实现的简单文件传输服务器和客户端
Apr 08 Python
python 编程之twisted详解及简单实例
Jan 28 Python
Python使用filetype精确判断文件类型
Jul 02 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
对python函数签名的方法详解
Jan 22 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 Python
python实现简单猜单词游戏
Dec 24 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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 操作符与控制结构
2012/03/07 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
简单谈谈python中的Queue与多进程
2016/08/25 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
python程序封装为win32服务的方法
2021/03/07 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
Yahoo-PHP面试题3
2012/01/14 面试题
如何强制垃圾回收
2015/10/06 面试题
小学信息技术教学反思
2014/02/10 职场文书
心理健康课教学反思
2014/02/13 职场文书
小学新学期寄语
2014/04/02 职场文书
干部个人对照检查材料
2014/08/25 职场文书
2015年新学期寄语
2015/02/26 职场文书
大学生求职自荐信
2015/03/24 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
检讨书怎么写
2015/05/07 职场文书
亮剑观后感500字
2015/06/05 职场文书