PyWebIO

Posted LightSong@计海拾贝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyWebIO相关的知识,希望对你有一定的参考价值。

Shell IO

https://tecadmin.net/prompt-user-input-in-linux-shell-script/#

Take Input on Termianl

Let’s begin with input directly on terminal. Open a terminal on your system and type:

read x 

Here read is the Linux command and “x” is the variable, where input value will be stored.

Hit enter after typing the above command. You will see a blank line without a prompt. It means the shell is waiting for your input. Type some text and hit enter button. You will find the prompt again.

Now, verify that the input value is stored in a defined variable. To confirm it, print the variable value with the echo command.

echo $x

There is no need to define any data type for variables. Shell automatically adjusts the type based on the user input.

Lets’ go with a sample shell script to take user input.

 

PyWebIO

https://github.com/pywebio/PyWebIO

https://pywebio.readthedocs.io/en/latest/

 

调用python函数的方式,获取用户输入 和 输出到浏览器。(体验类似 shell )

构建简单的web应用 或者 基于浏览器的 GUI 应用, 不需要html JS知识。

 

PyWebIO provides a series of imperative functions to obtain user input and output on the browser, turning the browser into a "rich text terminal", and can be used to build simple web applications or browser-based GUI applications without the need to have knowledge of HTML and JS. PyWebIO can also be easily integrated into existing Web services. PyWebIO is very suitable for quickly building applications that do not require complex UI.


 

特征:

  • 同步模式读取输出
  • 布局内置,不用设置
  • 更少的入侵, 修改已有代码,只需要关注输入和输出的替换,可完成代码改造
  • 支持继承到已有web框架
  • 支持 异步 和 协程
  • 支持数据可视化

 

Features:

  • Use synchronization instead of a callback-based method to get input
  • Non-declarative layout, simple and efficient
  • Less intrusive: old script code can be transformed into a Web application only by modifying the input and output operation
  • Support integration into existing web services, currently supports Flask, Django, Tornado, aiohttp, FastAPI framework
  • Support for asyncio and coroutine
  • Support data visualization with third-party libraries, e.g., plotly, bokeh, pyecharts.

 

DEMO

https://pywebio-demos.pywebio.online/

基本demo

  • BMI计算: 根据身高体重计算BMI指数
  • 聊天室: 和当前所有在线的人聊天 (不到90行代码实现)
  • Markdown实时预览: 可以实时预览的在线Markdown编辑器 (不到40行代码实现)
  • 在线五子棋游戏: 多人协作对战的五子棋游戏 (不到100行代码实现)
  • 输入演示: 演示PyWebIO输入模块的用法
  • 输出演示: 演示PyWebIO输出模块的用法
  • 更多Demo请见文档中示例代码的在线Demo

数据可视化demo

PyWebIO还支持使用第三方库进行数据可视化

  • 使用bokeh进行数据可视化 demos
  • 使用plotly进行数据可视化 demos
  • 使用pyecharts创建基于Echarts的图表 demos
  • 使用pyg2plot创建基于G2Plot的图表 demos
  • 使用cutecharts.py创建卡通风格图表 demos

 

出处:http://www.cnblogs.com/lightsong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

团队效率提升Python-PyWebIO介绍

作者:京东零售 关键

Q&A快速了解PyWebIO

Q:首先,什么是PyWebIO?

APyWebIO提供了一系列命令式的交互函数,能够让咱们用只用Python就可以编写 Web 应用, 不需要编写前端页面和后端接口, 让简易的UI开发效率大大提高(本人非研发,用词可能不妥,大家轻点喷)


Q:其次,我们能用来干嘛?? 这对一个团队的效率提升有什么作用??

APywebio的作用在于让咱们可以快速的开发一个带有UI界面的,支持用户输入的,以既定的逻辑输出结果的应用。 那么,我们是不是可以将团队内一些机械性的数据处理,数据异动分析等的工作以既定逻辑的方式通过Pywebio输出一个可复用的应用给大家使用呢? 当然,日常的数据运营过程中,咱们肯定不是面对着一成不变的case。 那么,我们是不是可以用不同参数输入的方式来达到一定的泛用性拓展呢? 只要,case和case之间的底层逻辑是一致的,我们就可以用同一套逻辑,不同的入参来达到不同结果输出的获取。

Exampl 倘若,我们每天都有一项工作,每天对着一份又一份业务反馈的订单,然后部门需要对着这些订单本身进行一个初步的风险分层,我们是不是可以把风险分层的底层规则写在后端,然后通过PywebIO来支持不同情况下的不同规则阈值输入, 快速获取咱们所需要的风险分层结果。 (当然,如果数据允许,直接写SQL也可以,可是,SQL需要一定的门槛,而PywebIO则可以通过UI的方式分享给那些没有技术背景的运营人员进行0代码使用。)


以下正式开始用一个例子来逐步介绍PywebIO拓展包

简介

虚拟背景: 每天需要一份又一份地对业务反馈的样本来进行风险分层,为了提高处理效率。

计划方案: 通过现有风险标签的波尔标签,非波尔标签体系来搭建一个支持 灵活配置阈值来快速获取分层结果的UI应用。

方案简介:基本逻辑如下,(以下均为举例所示,并不代表该方案就可以进行风险分层哈,大家请注意)


【团队效率提升】Python-PyWebIO介绍_数据



开始实现:这里的例子采取的是非数据库模式,支持的是上传本地csv,然后进行阈值配置。

Step one:本地文件上传

首先,肯定是得先文件上传的代码。

##例子如下:
import pandas as pd
from pywebio.input import *
from pywebio import start_server
from pywebio.output import *
import nest_asyncio
import numpy as np
import os
import time

nest_asyncio.apply()

import pandas as pd
from pywebio.input import *
from pywebio import start_server
from pywebio.output import *
import nest_asyncio
import numpy as np
import os
import time

nest_asyncio.apply()

def read_csv():
put_markdown(# 只支持pin)
put_markdown(功能如下:)
put_markdown("""
- 选择与程序再**同一文件夹**的文件
- 输入你希望卡的风险值阈值 **不输入则默认-10**
- 自动加载解析输出极黑标签占比以及明细数据
- 请勾选你所需要的标签**(不勾选=全选)**,然后点击提交即可
""")

file = file_upload(只支持上传该程序所在文件夹的csv文件哦, .csv)

## 本地文件

raw_data = pd.read_csv(os.getcwd() + "\\" + file[filename], encoding=gbk)
put_html(raw_data.to_html())

if __name__ == __main__:

start_server(read_csv, port=8081, debug=True, cdn=False, auto_open_webbrowser=True)

允许代码后,因为” auto_open_webbrowser=True“,所以自动弹出一个WebUI,如下左图,选择上传的文件,即可看到下右图的文件数据


【团队效率提升】Python-PyWebIO介绍_上传_02

以上是关于PyWebIO的主要内容,如果未能解决你的问题,请参考以下文章

团队效率提升Python-PyWebIO介绍

PyWebIO

不用H5,直接使用pywebio模块实现网页

python新晋界面库pywebio,如何做到复杂交互界面

3000 字推荐一个可视化神器,50 行 Python 代码制作数据大屏

微信小程序代码片段