簡體   English   中英

Python-將變量參數傳遞給subprocess.call的最佳方法

[英]Python- best way to pass variable arguments to subprocess.call

我正在嘗試使用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,如果這是非常基本的功能,請對不起!

您正在嘗試在列表上使用取模運算符 ,我想您想對最后一項進行字符串格式化,因為百分號符號被重載以對字符串進行格式化,但是由於您只是想插入項目而不進行任何格式化,您可以直接給它:

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

如果確實要使用格式,則需要在字符串上進行格式化:

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

但是請注意,鑒於您沒有進行任何格式化,因此這毫無意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM