python - 从py创建exe在执行时默认传递参数?
问题描述
如果我们假设这是 test.py 代码:
import sys
for arg in sys.argv:
print arg
print "Hello World!"
通过使用auto-py-to-exe或pyinstaller或py2exe等工具,我们如何制作一个在执行时默认传递特定参数的 exe?例如:通过使用一个工具,我们从 test.py 创建一个 test.exe 并通过执行 test.exe 它将使用 foobar 作为 arg, test.exe 执行的输出是:
foobar
Hello World!
我已经测试过 auto-py-to-exe 和 pyinstaller 但两者都没有这样的选项。我应该提一下,我对使用 [任何] 工具更感兴趣,而不仅仅是修改 python 源代码。因为在更大的来源中修改可能是一项艰巨的任务。
解决方案
我建议使用 pythons ArgumentParser ( https://docs.python.org/2/howto/argparse.html ) 并default=
为您的参数设置一个值。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("argument", default="foobar")
args = parser.parse_args()
print arg
print "Hello World!"
您还可以重组您调用的 python 脚本以使用您需要的参数实现“main”方法:
def main(argument):
print argument
print "Hello World!"
对于您的特定可执行文件,只需创建单独的包装脚本:
foobar.py
from test import main
test("foobar")
另一个foobar.py
from test import main
test("anotherfoobar")
现在您可以使用 pyinstaller 分别创建 foobar.py 和 anotherfoobar.py 的可执行文件。
推荐阅读
- python - 设置未在 GUI 中输入的变量和“无响应”问题
- c++ - 类中的 C++ 后台线程 - 实例范围
- c++ - 根据特定设计在win32中平铺菜单项
- lerna - npm链接执行命令找不到依赖命令
- java - 在android studio中编辑年龄文本中的验证
- python - 如何获取 Dropbox 文件的路径以便在 python 中使用 files_download 函数?
- python - 嵌入机器人输出 (discord.py)
- amazon-web-services - 响应包含循环引用,无法在 AWS 中序列化为 JSON
- c# - 通过 Npgsql 连接到 heroku 时出现“FATAL: No pg_hba.conf entry for host...”
- php - 自动登录wordpress