我想從os.system("nslookup google.com")
得到輸出,但是在打印時總是得到0
。爲什麼是這樣的,我該如何解決這個問題? (Python 3中,蘋果機)如何獲得os.system()的輸出?
(我看着How to store the return value of os.system that it has printed to stdout in python? - 但是我不明白吧〜我是新來的Python)
我想從os.system("nslookup google.com")
得到輸出,但是在打印時總是得到0
。爲什麼是這樣的,我該如何解決這個問題? (Python 3中,蘋果機)如何獲得os.system()的輸出?
(我看着How to store the return value of os.system that it has printed to stdout in python? - 但是我不明白吧〜我是新來的Python)
使用subprocess
:
import subprocess
print(subprocess.check_output(['nslookup', 'google.com']))
如果返回碼是不爲零,將提出一個CalledProcessError
例外:
try:
print(subprocess.check_output(['nslookup', 'google.com']))
except subprocess.CalledProcessError as err:
print(err)
os.system只返回命令的退出代碼。這裏0
意味着成功。任何其他數字代表操作系統相關的錯誤。輸出到這個過程的標準輸出。 subprocess打算取代os.system
。
subprocess.check_output是圍繞subprocess.Popen一個便利的包裝,可以簡化您的使用情況。
它可以工作。但是,你能解釋爲什麼os.system(command)不打印輸出嗎? (我是Python新手) – Kamdroid
的可能的複製[如何存儲使用os.system的返回值,它具有打印到標準輸出的蟒蛇?](http://stackoverflow.com/questions/6746126/how-to-store-the-return- os-system-that-has-print-to-stdout-py-py) – Mel