>>> import subprocess
>>> subprocess.check_output("smartctl -d ata -a /dev/sda", shell=True)
"output of above command prints normally"
>>> subprocess.check_output("smartctl -d ata -a /dev/sdb", shell=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'smartctl -d ata -a /dev/sdb' returned non-zero exit status 64
誰能向我解釋爲什麼與SDA上面的命令工作正常,但與深圳發展銀行返回一個錯誤? sdc也可以用於記錄。另外,我知道使用shell = True的風險。我正在學習python,並在編寫測試腳本時遇到了這個問題。蟒蛇subprocess.check_output一些命令
有趣的是,你的代碼給了我下面的錯誤:NameError:name'CalledProcessError'未定義。編輯將其修改爲subprocess.CalledProcessError。 – user2503227
謝謝,我編輯了我的答案。或者,您可以在我的代碼片段之前寫入'from subprocess import CalledProcessError'。 –
當我更改爲subprocess.CalledProcessError並打印e.output時,我看到smartctl命令的輸出顯示沒有錯誤。奇怪,這是不是預料? – user2503227