自动将argparse兼容脚本公开为web界面

argparseweb的Python项目详细描述


[![版本状态][v-image]][pypi url] < BR>
自述# < BR>
这个基于web.py的简单模块允许您使用高级的"argparse.argumentparser"对象和类似的("argh.argumentparser")对象自动设置一个简单的http web服务器。
在argh之上使用此选项,可以从应用程序中定义的简单函数中自动生成web用户界面。
此软件包是为将您的个人命令行脚本转到下一阶段(内部共享实用程序)而制作的。 < BR>
如何设置?β1 < BR>
对于类似生产的设置,您需要: < BR>
1。通过调用webui.webui.wsgi()方法使主脚本公开应用程序全局对象 < BR>
2。修改"index.wsgi"以适合您的应用程序(简单配置,导入前面提到的应用程序) < BR>
3。设置支持apache(或任何其他)服务器的wsgi < BR>
要进行调试,您需要安装程序(但由于它用于内部工具,因此也可以): < BR>
1。将类似"argparse.argumentparser.parse_args()"或"argh.dispatch()"的方法分别替换为"webui.webui.getone()"或"webui.webui.dispatch()"。 < BR>
`dispatch()`将实例化一个web服务并调用dispatch方法(由用户-您-或支持参数分析器的dispatch方法,如'argh') < BR>
`get()`and`getone()`wrap the`dispatch()`method并在以web形式提交结果时生成结果,提供了一个类似于`parse_args()`method的接口。 < BR>
依赖关系### < BR>
"argparseweb"要求"web.py"可用。您可以使用以下命令安装它(检查最新版本):`pip install web.py` < BR>
基本示例###
此示例将设置一个http服务器,获取一个有效输入,关闭http服务器,向stdout打印欢迎消息并退出:
``巨蟒
导入argparse
来自argparseweb导入* < BR>
def main():
parser=argparse.argumentparser() < BR>
parser.add_参数("name",default="anonymous") < BR>
previous opts=parser.parse_args()
opts=webui.webui(解析器).getone()
print("hello{name}\n这是一个简单的示例。".format(name=opts.name)) < BR>
如果uuu name_uuuu=="uuu main_uuu":
主()
< BR>
此示例也将一直运行到停止,为每个有效输入打印欢迎消息:
``巨蟒
导入argparse
来自argparseweb导入* < BR>
def main():
parser=argparse.argumentparser() < BR>
parser.add_参数("name",default="anonymous") < BR>
previous opts=parser.parse_args()
对于webui.webui(parser.get()中的opts:
print("hello{name}\n这是一个简单的示例。".format(name=opts.name)) < BR>
如果uuu name_uuuu=="uuu main_uuu":
主()
< BR>
此示例将在http响应中打印欢迎消息,并将其发送回用户:
``巨蟒
导入argparse
来自argparseweb导入* < BR>
定义欢迎(OPTS):
print("hello{name}\n这是一个简单的示例。".format(name=opts.name)) < BR>
def main():
parser=argparse.argumentparser() < BR>
parser.add_参数("name",default="anonymous") < BR>
previous opts=parser.parse_args()
webui.webui(parser.dispatch)(欢迎,parsed=true) < BR>
如果uuu name_uuuu=="uuu main_uuu":
主()
< BR>
一个更复杂的例子### < BR>
此代码段包括webui实用程序的三种操作模式: < BR>
1。第一个也是最简单的:使用argh的自动函数将方法分派到命令行解析器工具,这与webui完全无关,这样就不会失去现有的命令行使用能力。 < BR>
2。将"--webui"作为第一个命令行参数,设置一个开发web服务器(默认为*:8080)并准备好使用。 < BR>
3。公开"application"全局对象支持wsgi接口的。一旦你用正确的wsgi配置指向一个浏览器(对我来说这是第一次有点痛苦),它就会像魔术一样工作:) < BR>
我的app.py:
``巨蟒
导入argparse
来自argparseweb导入* < BR>
def get_parser():
"生成泛型参数分析器"
cmd_parser=argh.arghparser()
cmd_parser.add_命令([…]) < BR>
返回命令分析器 < BR>
def main_1():
k.照常获取解析器
cmd_parser=get_parser() < BR>
使用webui的最后机会,如果--webui作为第一个命令行参数传递

如果sys.argv[1]='--webui':
sys.argv.remove('--webui')
webui.webui(cmd_parser.dispatch();第二种操作模式-开发/快速设置 其他:
发送webui或argh
cmd_parser.dispatch()第一种操作模式-常规命令行 < BR>
def main_2():
parser=argparse.argumentparser() < BR>
TOdo:填充argparse < BR>
opts=解析器.parse_args()
opts=webui.webui(解析器).getone() < BR>
todo:使用opts就像使用ArgumentParser生成的任何命名空间一样,
opts实际上是一个由解析器直接创建的命名空间对象,webui只编译了一个参数序列
< BR>
定义wsgi():
全球应用 < BR>
使用命令行参数解析器对象创建webui应用程序

cmd_parser=get_parser()
应用程序=webui.webui(cmd_parser.wsgi()第三种操作模式-生产wsgi应用程序 < BR>
如果uuu name_uuuu=="uuu main_uuu":

主() 其他:
如果脚本未初始化为主脚本,则可能正在运行
在wsgi模式下
wsgi()

索引.wsgi:
``巨蟒
TOdo:替换为应用程序路径
我现在找到了在wsgi中自动获取它的方法:/
应用程序目录='/var/www/myapp' < BR>
导入系统,操作系统
系统路径插入(0,应用程序目录)
os.chdir(应用程序目录) < BR>
来自MyApp导入应用程序 < BR>
< BR>
更多示例位于"test.py"` < BR>
已知问题### < BR>
*现在改变长度参数(nargs='?',nargs='*',nargs='+')被限制为一个参数,因为我没有为此编写所需的html。我正在考虑多个文本输入或带有行分隔的文本区域,输入(和代码)是最受欢迎的。 < BR>< BR/>完成: < BR>
*需要一些代码重新排序(将模板拆分到另一个文件-它变得很大,更好地处理操作参数-不应该将所有内容都作为html属性传递,尽管这样做很舒服)
*更平滑地集成到现有代码中。 < BR>
[v-image]:https://img.shields.io/pypi/v/argparseweb.svg
[dm image]:https://img.shields.io/pypi/dm/argparseweb.svg < BR>
[pypi url]:https://pypi.python.org/pypi/argparseweb/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ IDEA CreativeProcess错误=193,%1不是有效的Win32应用程序   在java中返回多个值(字符串和数组)   我们可以使用java驱动程序。在pom类中查找数据?   java是处理请求后数据的有效方法   用于小文件的java音频缓存安卓 studio   使用Java exec的postgresql额外psql命令行参数   java导入语句代码错误   使用服务上传java Android HTTPS文件(从HTTP转换为HTTPS)   启动配置服务器组织时发生java Microservice错误。springframework。靴子上下文财产。绑定绑定结果   swing Java:无法在JFrame中显示图像   使用带有JDBC Bolt驱动程序的Neo4j嵌入式数据库进行java Spring启动测试   骆驼分割后的java异常不会升级   oop Java类声明说明   Android SimpleDataFormat中的java错误   java无法将Apache Commons FileUpload与Spring Boot multipart一起使用。坚决地   java连续循环,直到满足条件   JAVA不可用   java将数据从RecyclerView发送到Fragment   java Swing渲染。。。它是否总是必须是repaint()和paintComponent()?