在子进程中使用字符串

时间:2016-02-27 09:06:29

标签: python-3.4

我已编写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的值。如果有人能向我解释这一点,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您不将其与shell=True一起使用(除非您真的知道自己在做什么,否则我不建议使用shell=True,因为shell模式会产生安全隐患){{1}将命令作为其组件的序列(例如subprocess.call):首先是可执行文件名,然后是要传递给它的参数。所有这些都应该是字符串,但无论它们是字符串文字,持有字符串的变量还是返回字符串的函数调用都无关紧要。

因此,以下内容应该有效:

list
  • 我正在使用str's format methodimport 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 ,则需要后者。在这种情况下,前导入将是不必要的。