下面我将详细讲解“Python带参数打包exe及调用方式”的完整攻略。
1. 大体思路
- 在Python程序中获取命令行参数。
- 使用PyInstaller对Python程序进行打包成exe文件。
- 使用subprocess模块在Python程序中调用exe程序,并通过参数传递数据。
2. 获取命令行参数
在Python程序中获取命令行参数,可以使用sys模块的argv属性。示例代码如下:
import sys
def main(args):
# 获取除了脚本名以外的命令行参数
arg1 = args[1]
arg2 = args[2]
print(arg1, arg2)
if __name__ == '__main__':
main(sys.argv)
上述代码中,main函数接收一个参数args,args是sys.argv所返回的参数列表。除了列表中的第一个元素是脚本名以外,其他元素就是命令行传入的参数。
3. 使用PyInstaller打包成exe文件
使用PyInstaller对Python程序进行打包成exe文件,可以通过以下步骤完成:
- 安装PyInstaller
pip install pyinstaller
- 运行PyInstaller
pyinstaller --onefile main.py
上述命令将把Python程序main.py打包成一个独立的exe文件,输出到dist目录下。
4. 使用subprocess模块在Python程序中调用exe程序
使用subprocess模块在Python程序中调用exe程序,并通过参数传递数据,可以使用以下代码:
import subprocess
def main(args):
arg1 = args[1]
arg2 = args[2]
subprocess.run(['./dist/main.exe', arg1, arg2])
if __name__ == '__main__':
main(sys.argv)
上述代码中,subprocess.run函数接收一个参数列表,该列表包含exe程序及其参数。其中'./dist/main.exe'是打包好的exe程序路径,arg1和arg2是通过命令行传入的参数。
5. 示例说明
假设我们有一个Python程序main.py,需要通过命令行传递两个参数,然后调用另一个Python程序func.py,并将传入的参数作为func.py的参数。最后,func.py需要将处理结果输出到控制台。
示例1:使用PyInstaller打包成exe文件
- main.py代码
import sys
import subprocess
def main(args):
arg1 = args[1]
arg2 = args[2]
subprocess.run(['./dist/func.exe', arg1, arg2])
if __name__ == '__main__':
main(sys.argv)
- func.py代码
import sys
def main(args):
arg1 = args[0]
arg2 = args[1]
result = int(arg1) + int(arg2)
print(result)
if __name__ == '__main__':
main(sys.argv[1:])
- 打包成exe文件
pyinstaller --onefile main.py
pyinstaller --onefile func.py
- 执行程序
.\dist\main.exe 1 2
上述命令将输出3。
示例2:使用PyInstaller打包成单个exe文件
- main.py代码
import sys
import subprocess
def main(args):
arg1 = args[1]
arg2 = args[2]
subprocess.run([sys.executable, '-c', 'import func; func.main(["{}","{}"])'.format(arg1, arg2)])
if __name__ == '__main__':
main(sys.argv)
- func.py代码
import sys
def main(args):
arg1 = args[0]
arg2 = args[1]
result = int(arg1) + int(arg2)
print(result)
if __name__ == '__main__':
main(sys.argv[1:])
- 打包成单个exe文件
pyinstaller --onefile main.py
- 执行程序
.\main.exe 1 2
上述命令将输出3。
以上就是Python带参数打包exe及调用方式的完整攻略,如果还有不清楚的地方可以再问我。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python带参数打包exe及调用方式 - Python技术站