2015-12-23 40 views
0

我想從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)

+1

的可能的複製[如何存儲使用os.system的返回值,它具有打印到標準輸出的蟒蛇?](http://stackoverflow.com/questions/6746126/how-to-store-the-return- os-system-that-has-print-to-stdout-py-py) – Mel

回答

0

使用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一個便利的包裝,可以簡化您的使用情況。

+2

它可以工作。但是,你能解釋爲什麼os.system(command)不打印輸出嗎? (我是Python新手) – Kamdroid