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 モジュールを使用すると、引用符で囲まれた値などの生のシェル入力を適切に処理できます。

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