2

Pythonスクリプトを使用して、毎回異なる変数で外部コマンドを何度も呼び出そうとしています。

これを行うために subprocess.call を使用することをお勧めしますが、私が見つけたすべてのドキュメントは、この関数変数を渡す方法を説明していません (たとえば、リストから)。

さまざまな形式を試しましたが、置換が最適だと思いますが、関数が変数を受け入れないようです。私が動作させようとしているコードは次のとおりです。

#!/usr/bin/python
domain_list             = ["google.com", "google.ie"]

from subprocess import call

for x in domain_list:
    print x
    cmd_list       = ['dig', '+short', '%s'] %x
    call(cmd_list, shell=True)

これは失敗しています:

Traceback (most recent call last):
File "./dnscheck.py", line 16, in <module>
cmd_list    = ['dig', '+short', '%s'] %arg
TypeError: unsupported operand type(s) for %: 'list' and 'str'

本当に、(リストで定義された) さまざまなドメインの束を渡して、それらのドメインの IP を掘り下げて受信できるようにしたいと考えています。

私はPythonを始めたばかりなので、これが非常に基本的なものである場合は申し訳ありません!

4

1 に答える 1

6

リストでモジュロ演算子を使用しようとしています。パーセンテージ記号は文字列で書式設定を行うためにオーバーロードされているため、最後の項目で文字列の書式設定を行いたいと思いますが、書式設定なしで項目を挿入したいだけなので、直接与えることができます:

['dig', '+short', x]

書式設定を使用したい場合は、文字列に対して行う必要があります。

['dig', '+short', '%s' % x]

ただし、フォーマットを行っていない場合、これは無意味であることに注意してください。

于 2012-04-18T12:39:58.663 に答える