0

サブプロセス モジュールを使用して引数付きのコマンド ライン ソフトウェアを実行していますが、引数のリストを渡すときに少し問題が発生しています。

これが私がやっていることです:

subprocess.call([rv,"[",rv_args[0],rv_args[1],"]",])

これは正常に動作し、len(rv_args) == 2です。これを生成したいと思います:

if len(rv_args) == 4 :
    subprocess.call([rv,"[",rv_args[0],rv_args[1],"]","[",rv_args[2],rv_args[3],"]",])

それから

if len(rv_args) == 6 :
    return subprocess.call([rv,"[",rv_args[0],rv_args[1],"]","[",rv_args[2],rv_args[3],"]","[",rv_args[4],rv_args[5],"]"])

など..など..

もちろん、私はそれをハードコーディングしたくはありませんが、その場で生成します。何が最善の方法ですか?

乾杯、

4

1 に答える 1

1

Here's one way:

rv = "command"
rv_args = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


def get_arguments(rv, rv_args):
    arguments = [rv]
    for i in xrange(0, len(rv_args), 2):
        arguments += ["["] + rv_args[i:i+2] + ["]"]

    return arguments

print get_arguments(rv, rv_args)

returns:

['command', '[', 1, 2, ']', '[', 3, 4, ']', '[', 5, 6, ']', '[', 7, 8, ']', '[', 9, 10, ']']
于 2012-07-17T06:17:32.533 に答える