簡體   English   中英

如何在bash中解析json或將curl輸出傳遞給python腳本

[英]How to parse json in bash or pass curl output to python script

我正在尋找一種方法來在json中漂亮地顯示curl的輸出。 我為此編寫了簡短的python腳本,但是它不適用於管道,而且我也不想使用子進程並從中運行curl:

所以python:

#!/usr/bin/python

import simplejson
from pprint import pprint
import sys
print pprint(simplejson.loads(sys.argv[1]))

json信息是:

{"response": {"utilization": {"eic": [{"date": "2012.03.06", "usage": []}, {"date": "2012.03.07", "usage": [{"srvCode": "SVC302", "upload": 267547188, "api-calls": {"fileGetInfo": 30, "getUserStorageQuota": 0, "setUserStorageQuota": 0, "fileUploadFlashInit": 31, "getAPISessionUser": 0, "setFileAccessControl": 0, "fileGetPreviewUrl": 0, "fileStartMultipartUpload": 0, "getServiceQuota": 0, "fileGetPreviewUrlsForBunch": 10, "xcodingGetStreamUrl": 0, "getSessionTimeLimit": 0, "fileGetCoversUrlsForBunch": 27, "makePreviews": 0, "setServiceQuota": 0, "getAPISessionTrusted": 3, "getFileAccessControl": 0, "xcodingGetFormats": 0, "getQuotaNotificationEmail": 0, "fileGetDownloadUrl": 0, "xcodingGetStreamInfo": 0, "fileUploadDone": 30, "getLocalServiceUtilization": 9, "getServiceUtilization": 0, "fileDelete": 19, "setSessionTimeLimit": 0, "fileGetMultipartUploadUrl": 0, "fileUploadInit": 0, "extractFileMetadata": 30, "setQuotaNotificationEmail": 0}, "average-storage": 3801210959.4961309, "download": 0, "transcoding": 0}]}]}}}

從外殼使用json.tool進行驗證並進行漂亮打印:

$ echo '{"json":"obj"}' | python -mjson.tool
{
    "json": "obj"
}

您正在嘗試讀取傳遞給程序的第一個參數,這是錯誤的。

使用管道時,流將重定向到程序stdin。 您應該閱讀sys.stdin,請參閱“ 如何從python中的stdin中閱讀 ”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM