python - 可选择将参数传递给 python 中的子进程

标签 python subprocess command-line-arguments

在我的脚本中,我使用可选命令行参数调用一个可执行文件(如果传递,此参数将打开可执行文件中的一个函数,默认情况下该函数处于关闭状态)。我想直接从脚本本身的参数控制这个选项。现在写我做的:

import subprocess
option = False
if option:
    check = subprocess.Popen(['executable', '--option'])
else:
    check = subprocess.Popen(['executable'])

我试图找到一种更紧凑的方式:

import subprocess
option = False
check = subprocess.Popen(['executable', '--option' if option else ''])

但这会在精确本身中引发错误“未知选项”。

这会在 python 中引发错误:

import subprocess
option = False
check = subprocess.Popen(['executable', '--option' if option else None])

所以,我的问题:有没有一种方法可以在一行中将可选参数传递给子进程?

最佳答案

在我看来,比当前建议更具可读性的替代方案是使用列表解包:

*(['--opt=val'] if opt else [])

以你的例子为例:

check = subprocess.Popen([
    'executable',
    *(['--option'] if option else [])
])

关于python - 可选择将参数传递给 python 中的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018307/

相关文章:

python - Keras 交叉熵

python - 引发异常时,如何停止CMD(来自subprocess.popen)关闭?

python - Reactor.run 卡住循环

python - 在 Google App Engine 上设计可扩展的产品数据库

python - 如何告诉子进程回答 "y"到命令行问题?

java - NetBeans IDE - 如何使用控制台运行 Java 应用程序

java - 使用JAVA在命令行中实现

c# - Azure webjob 参数

python - django - DetailView 如何同时显示两个模型

python - 弹出一个命令,其中包含需要对所有输出说"is"的命令