2017-06-18 51 views
0

」沒有這樣的文件或目錄:'主機名-I'「我正在嘗試使用Python和'子流程'中的'check_output'獲取計算機的IP。我的代碼是:「在子流程

import subprocess 

rawIp = subprocess.check_output("hostname -I") 
#converts the output of rawIp to a string 
ip = rawIp.decode("utf-8") 
print(ip) 

我不知道爲什麼會發生這種情況。在我的代碼中,我有一些其他的'check_output',它們都按預期工作。

+0

主機名只接受'-fs'作爲參數afaik –

+1

@DaniSpringer選項'-I'返回主機的所有IP地址列表,請參閱[手冊頁](https://linux.die.net/man/1 /主機名)。 –

+0

@DmitryPolonskiy返回我的主機名,這不是我正在尋找的。 – SirPizzaRolls

回答

0

功能subprocess.check_output不指望一個命令行,但單參數:

subprocess.check_output(["hostname", "-I"]) 

subprocess.check_output(("hostname", "-I")) 

否則,該方法將搜索程序名稱爲hostname -I而不是程序hostname,參數-I

+0

非常感謝,完美的作品! (另外,我在考慮這個問題的時候考慮過這個問題,但是我忘記了'[]')。 – SirPizzaRolls