$ jsonlint -CQ /home/test/notokay1.json獲取與Python殼牌輸出
以上命令已經退出值1和下面輸出
/home/notokay1.json:第6行第1列發現:'EOF' - 預期:'}',','。
我如何在Python中捕獲這兩者。
$ jsonlint -CQ /home/test/notokay1.json獲取與Python殼牌輸出
以上命令已經退出值1和下面輸出
/home/notokay1.json:第6行第1列發現:'EOF' - 預期:'}',','。
我如何在Python中捕獲這兩者。
import subprocess
p = subprocess.Popen('jsonlint -cq /home/test/notokay1.json'.split(),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate()
print "Standard Output:", out
print "Standard Error Output:", err
print "Return Code:", p.returncode
我beleive這是你在找什麼:
$ jsonlint -cq /home/test/notokay1.json > stdout.txt; echo $? > stderr.txt
然後你可以使用python's built in file I/O閱讀stdout.txt和的stderr.txt
refrence:http://www.tldp.org/LDP/abs/html/io-redirection.html
您可以使用subprocess模塊,更具體地說是check_output方法。
假設你有一個名爲test.bash與文件,內容如下:
echo "Hi"
exit 1
同時捕獲的退出代碼,你可以做這樣的事情的輸出:
# test.py file
import subprocess
exitCode = 0
output = ""
try:
output = subprocess.check_output(["bash", "test.bash"]) # get only ouput
except subprocess.CalledProcessError as e:
# get output and exit code
exitCode = e.returncode
output = e.output
print(output, exitCode)
哪輸出:
bash-4.2$ python test.py
('Hi\n', 1)
你只需要適應你的問題。
OP很可能試圖捕獲標準錯誤,而不是標準輸出。 – chepner
我正是用這個:) –