我已编写Python代码以编程方式计算IP,然后我想在外部连接程序中使用。
我不知道如何将其传递给子流程:
import subprocess
from subprocess import call
some_ip = "192.0.2.0" # Actually the result of some computation,
# so I can't just paste it into the call below.
subprocess.call("given.exe -connect host (some_ip)::5631 -Password")
我已经阅读了我能做的并找到了类似的问题,但我真的无法理解这一步,在子流程中使用some_ip
的值。如果有人能向我解释这一点,我将不胜感激。
答案 0 :(得分:1)
如果您不将其与shell=True
一起使用(除非您真的知道自己在做什么,否则我不建议使用shell=True
,因为shell模式会产生安全隐患){{1}将命令作为其组件的序列(例如subprocess.call
):首先是可执行文件名,然后是要传递给它的参数。所有这些都应该是字符串,但无论它们是字符串文字,持有字符串的变量还是返回字符串的函数调用都无关紧要。
因此,以下内容应该有效:
list
str
's format
method将import subprocess
some_ip = "192.0.2.0" # Actually the result of some computation.
subprocess.call(
["given.exe", "-connect", "host", "{}::5631".format(some_ip), "-Password"])
中的{}
占位符替换为"{}::5631"
中的字符串。如果您将其作为some_ip
调用,则
subprocess.call(...)
就足够了
import subprocess
是不必要的。如果要将函数调用为from subprocess import call
,则需要后者。在这种情况下,前导入将是不必要的。