1

这里是 python 初学者。我一直在做一些在线教程,似乎找不到这个问题的解决方案。我想做的是:

hostname = raw_input("Type host name here: ")

然后用户输入任意数量的主机名,输入done,然后他们输入的内容就成为脚本中使用的变量。因此,如果他们键入 HOST1、HOST2、HOST3,done,那么脚本将为每个条目运行命令。例子:

def myhostsbecomevariables(*args):
      arg1, arg2, arg3, etc etc etc = args
      print "arg1: %r, arg2: %r, etc: %r, etc: %r" % (arg1, arg2, etc etc)

myhostsbecomevariables(HOST1, HOST2, HOST3)

如果用户键入 3 个主机名,则 myhostbecomesvariables 使用 3 个参数。如果他们输入了 5 个主机名,那么它将有 5 个参数。

4

2 回答 2

4

raw_input返回单个字符串。如果您愿意,可以在分隔符上拆分该字符串:

hosts = raw_input("enter hosts (separated by a comma):").split(',')

或拆分为 2 行:

host_string = raw_input("enter hosts (separated by a comma):")
hosts = hosts_string.split(',')

您可以将其传递给myhostbecomevariables使用参数解包:

myhostbecomevariables(*hosts)

你的函数可以这样定义:

def myhostbecomevariables(*hosts):
    for host in hosts:
        print(host)

确实没有必要在这里将主机解压缩成组成部分——因为(我假设)您将对每个主机执行相同的操作,只需循环执行即可。

于 2013-01-21T17:57:39.547 回答
0

这当然取决于您的用例,但使用shlex Python 模块可以很好地处理原始 shell 输入,例如引用的值。

import shlex
input = raw_input("Type host name here: ")
hostnames = shlex.split(input)
于 2013-01-21T18:02:33.873 回答