我们去年做过这样一个程序:Python项目分享——函数解析器。如果现在我希望添加一个功能:在系统内任意位置打开cmd后,输入Analysis [操作名] [操作参数]即可调用我的程序,怎么办?有多种方法可以实现这一点,这里介绍最简单的一种:sys.argv。sys不必多说,是Python标准库之一。负责提供一些Python脚本所在环境的信息。argv是sys库中的一个列表。它代表着(通过命令行运行Python时)命令行传递给Python的参数。特殊地,argv列表中第一项永远是当前python程序的文件名。analysis get_delta y=2x²+3x+7
["analysis.py","get_delta","y=2x²+3x+7"]
首先,重新定义一个main函数。这个函数只负责检查参数数量是否符合要求,以及根据指令名称,来调用对应的函数我们计划要求用户在cmd中按照这个格式来调用我们的程序all_cmds=("get_delta","get_axis","get_vertex","get_points")
这几个指令分别用来获取二次函数根的判别式,二次函数的对称轴,顶点和与x轴的交点(若有)。由于这周时间比较少,暂且就只支持这么多吧if len(cmds)!=3: print('''格式错误:期望的格式:analysis [操作名] [函数]''') return -1
记住:sys.argv的第一个元素永远是(对于此程序来说)无意义的文件名,所以即使我们期望有两个指令,也要写len(cmds)!=3function:quadratic_equation = parse_equation(cmds[2])cmd:str=cmds[1]
好了,那main函数就算写完了。接下来编写主程序入口补充一个知识,当程序被以命令行的方式调用时,__name__与直接运行时一样,都是"__main__"在主程序入口中,我们需要负责向main函数传递参数,并处理异常好了,那么整个源代码我们就改好了。可以看到,其实添加对命令行的支持非常简单。我这个快一个月不碰编程的人都可以在半个小时内写完(其中还算上了我打这篇文章这785个字的时间)。接下来,我们需要按照这篇文章教的打包方法,把你的Python程序封装成一个exe可执行文件。这是能让系统识别你的程序最简单的方法之一。(貌似不小心让pyinstaller把pygame导进来了一点,所以包稍微有点大)然后,我们先尝试在这个目录下来试着使用一下我们的程序,如果没有问题,那么我们就可以开始最后一步:添加到系统目录了。好了,测试没问题。这里在最前面输入".\"的原因自己了解一下吧cmd上不会有这个问题,这种不会从当前位置加载命令的特性只有powershell有。无论如何,让我们把它添加进系统目录,这样我们就可以在系统任意位置,不论是cmd还是powershell都可以进行调用了。放入系统目录有两种选择。第一种:放入你自己的用户目录。不需要管理员权限,且比较安全,要是这软件真的被注入恶意代码了也只有你自己的账户受影响C:\Users\你的用户名\AppData\Local\Microsoft\WindowsApps\
第二种:直接放进System32里面去。需要管理员权限。要真的出事了这台电脑上所有用户都会受影响好了,恭喜你,用Python自定义了一个cmd操作。并且成功让这个cmd操作可用了。这个方法运用好了非常好玩,本期视频只是展示了了最平平无奇的一个例子。看完文章后,大家可以大胆一点想想这个功能还能用来干什么。好了,那么本篇文章就到这里。大家生活上可能都不容易,但明天太阳总会升起。祝大家一切顺利,勇敢面对困难。再见!