Python被称为胶水语言也得益于其很方便地调用其他程序的特点
对于一个计算机程序,或者说程序的main函数过程,在很多时候会见到调用main时有参数,这些参数是作为程序的输入参数
Python打包得到的exe程序也能获取这些程序的输入参数:
(为避免程序执行完即很快退出导致看不到效果,此处添加sleep()操作)
# - Tutorial 15
# - 2020-2-10
# - Johan
# - 题目:
# 1、获取程序输入参数
# 2、调用.exe程序运行,获取返回参数
import sys
import time
try:
arg1 = int(sys.argv[1])
arg2 = int(sys.argv[2])
except Exception as e:
arg1 = -1
arg2 = -1
count = 5
while count > 0:
count -= 1
print('%d + %d = %d' % (arg1, arg2, arg1 + arg2))
time.sleep(1)
IDE中直接运行结果是:
IDE中默认没有程序输入参数,在该源文件的目录下打开cmd(在目录路径处输入cmd即可)
输入pyinstaller -F xxx.py打包生成上述程序的exe程序,在dist目录下找到生成的exe程序
直接点击exe文件运行结果为:
可以看到直接点击exe时,默认不带程序输入参数,如果是不需要必需的程序输入参数的程序,到这里就能四处发布运行了
打开该目录的cmd,输入tutorial_15.exe 5 6,设置程序输入参数为5和6,运行结果为:
根据打印能看到我们设置的程序输入参数正确在程序中调用了,接下来我们另外再写一个python程序调用这个exe程序
拷贝该exe到新的Python源程序的目录下(省去目录重定向过程,该过程也可以用os包实现)
写新的调用exe的Python源程序:
# - Tutorial 15
# - 2020-2-10
# - Johan
# - 题目:
# 1、获取程序输入参数
# 2、调用.exe程序运行,获取返回参数
import os
path = 'tutorial_15.exe %s %s' % (5, 6)
recv_val = os.system(path)
print(recv_val)
运行结果为:
(根据最上面的代码可知exe程序会在开始运行5秒后结束,返回程序结果,所以调用exe程序的程序会看到延迟了5秒才打印结果)
Terminal最后显示的0才是表示程序的返回值,虽然看到仍然输出了调用exe程序的打印,注意区分打印部分和程序返回值部分