2016-01-20 85 views
2

$ jsonlint -CQ /home/test/notokay1.json獲取與Python殼牌輸出

以上命令已經退出值1和下面輸出

/home/notokay1.json:第6行第1列發現:'EOF' - 預期:'}',','。

我如何在Python中捕獲這兩者。

回答

3

使用subprocess.Popen

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 
+0

我正是用這個:) –

1

您可以使用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) 

你只需要適應你的問題。

+0

OP很可能試圖捕獲標準錯誤,而不是標準輸出。 – chepner