前面内容,介绍了百度AI应用程序的创建、百度账号的申请及百度AI接口调用,并在此基础上实现了一个智能点钞机的应用。
现在,我们开始新的一章。
#Python文字识别#本章节,将对制作OCR使用的gooey库进行详细介绍。在介绍gooey之前,需要了解下命令行参数解析的方法,通过使用Python内置库argparse实现命令行参数解析。然后,引入gooey库,详细介绍如何将一个命令行解析库转化为图形界面。
引子:图形界面和命令行到底谁更高效?
开始今天的内容之前,先来看一个Linux系统下的Shell命令
ls-ltrs*上面这个命令行的意思是:列出目前工作目录下所有名称是s开头的文件,将文件以相反次序显示(越新的排越后面)。
如果是图形界面下实现这样的功能,那么至少应该用鼠标这样操作:
点击相关图形按钮,显示文件详细信息
点击文件创建时间那一列,使其列表反向显示
找到搜索框,输入s*
图形界面下,需要三步实现,而Shell中我们只需一个命令即可。
哪个更加高效呢?如果不计算学习成本(学习Shell脚本花费的时间),那使用一条命令显示很高效。
上面只是展示了Linux系统下Shell命令,下面,我们来看下不同系统如何调用(打开)命令行界面。
不同系统的命令行工具
对于windows用户,按下+键,在弹出对话框中输入,可以进入这样的交互界面。比如,你想要查看当前windows系统中所有端口占用情况,可以使用下面的命令:
netstat-ano
cmd的打开方式如果使用图形界面,可能获取到的信息就没这么详细了!
windows中,如果你想要更加高级的界面,在某个文件夹界面中按下,同时单击鼠标右键,同时按下键(或者点击“在PowerShell中打开”这个选项),即可打开PowerShell窗口,这是一个更加高级的命令行窗口,说它高级,是因为它是一个面向对象的命令行接口。
PowerShell打开方式这里的linux系统指的是大部分linux系统(衍生版本太多了^-^):
Ctrl+Alt+t:打开一个新的终端
Shift+Ctrl+t:在已有终端上打开一个新的tab
Shift+Ctrl+n:在已有终端上打开另一个新的终端(不是tab)
这里就不再截图了,感兴趣的小伙伴自己实验下!
此处略去,详情参见系统手册^-^
对于这些命令行工具,本质上来讲,就是调用系统中存在的一些应用程序,将程序运行结果在终端显示出来。而程序运行需要的一些参数,通过命令行的特定格式,传递给命令来执行。
比如,上面的“netstat-ano”这个命令。其中,a、n、o就是netstat运行时需要用户提供的参数,这里也可以分开来写,比如:netstat-a-n-o。当用户将这个命令提交给shell、cmd等终端工具时,shell、cmd就将命令发送给系统底层(可能这里还不是系统底层,暂且这样理解即可)执行,执行后系统将结果会送给shell、cmd等,shell、cmd通过其展示机制,将运行结果展示给用户。
我们知道,Python实现一个GUI界面的应用程序,只需要使用Tk、Qt等库进行搭建即可。但是,如何使用Python构建一个带有命令行解析功能的程序呢?
Python实现一个带有命令行解析功能的程序
其实,对于这个问题,前面已经有很多内容进行介绍了,这里不再赘述,直接上链接
一文读懂Python标准库中argparser模块,详解命令行参数和解析器
Python标准库之argparse,详解如何创建一个ArgumentParser对象
Python标准库之argparse,详解如何为ArgumentParser实例添加参数
新手:我不喜欢记命令
对于系统操作高手来讲,特别喜欢这种带有命令行解析功能的程序,因为只需要几个简单的参数,就可以为程序提供无限多功能的扩充(细品)。但同时,功能越多,程序的学习成本就会越高。
学习成本其实,我们无法准确判断GUI程序和Shell下命令行哪个更高效,单从普通用户来讲,肯定是学习成本越低越高效,因为大多数人是不愿意花费时间去学习一大堆命令行参数的。
最重要的是,程序通常需要做的不仅仅是一件事,这就需要为程序提供选项,要么构建一个GUI(Gooey模块),要么尝试解释如何为控制台应用程序提供参数(argparse模块)。
另一方面,尽管我们非常喜欢命令提示符,但在世界其他地方看来,它就像是80年代初的丑陋遗物。
Gooey是为了(希望)解决这些问题。它使程序易于使用,而且看起来很漂亮!
我们文章来介绍。
本文系作者原创,禁止转载!