【问题标题】:Variable interpolation in a for loop?for循环中的变量插值?
【发布时间】:2017-02-01 23:11:49
【问题描述】:

我有一个主机列表,我正在尝试迭代以建立 ssh 连接。在 ruby​​ 中,我可以使用 #{variable} 来访问命令中的变量,我应该为 python 做什么?

我在以下 python 代码中包含了 ruby​​ 语法,作为我想要该功能的位置的占位符。这样做的pythonic方式是什么?

h = """
foo-pants-linux-001
foo-pants-linux-002
foo-pants-linux-003
foo-pants-linux-004
foo-pants-linux-005
"""

hosts = h.split()

for host in hosts:
    subprocess.check_output("ssh foobar@#{host} `echo hi!`")

【问题讨论】:

标签: python loops ssh system interpolation


【解决方案1】:

您可以使用模数 (%) 或 .format(..)

subprocess.check_output("ssh foobar@%s `echo hi!`"%host)
subprocess.check_output("ssh foobar@{host} `echo hi!`".format(host=host))
subprocess.check_output("ssh foobar@{} `echo hi!`".format(host))

%s 是一个格式说明符,表示您采用主机的字符串值。

如果您想引入多个命名变量,您可以使用{host},然后使用显式命名的参数调用format()

您也可以使用{},这意味着您将获取给.format(..) 的参数中的下一个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 2013-09-29
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多