我想解析輸出的linux jq
調用python腳本,將解碼輸出jq
json str並做它的事情。解析輸入argv json字符串
我jq
通話jq '.geometry' myJson.json
的輸出是這樣的:
{
"coordinates": [
[
[
5,
2
],
[
5.4,
3
],
[
3,
2.1
]
]
],
"crs": {
"properties": {
"name": "foo"
},
"type": "name"
},
"type": "Polygon"
}
我已經寫了一個小蟒蛇的可執行文件,解碼輸出JSON字符串爲Python對象,然後做的事情:
import collections
import json
import sys
import logging
if __name__ == '__main__':
try:
geoJsonStr = str(sys.argv[1:])
print geoJsonStr ## This for some reason only prints an empty slice '[]'
data = json.loads(geoJsonStr)
coordinates = data['coordinates'] ## TypeError: list indices must be integers, not str
## Do things here
except ValueError as e:
logging.error(e.message)
exit(1)
這是我試圖稱之爲:
jq '.geometry' geoJson.json | myPythonProgram
但是我收到了一些python錯誤,如上面我的代碼片段所述。我認爲這是我通過jq
輸出到我的python可執行文件的方式。不知怎的,整個json字符串並沒有被選作argv
的參數。
我的第一個錯誤是print GeoJsonStr
從argv[1:]
打印出一個空的[]
切片。所以我可能會錯誤地將json字符串傳遞給python腳本。隨後的錯誤是:
coordinates = data['coordinates']
TypeError: list indices must be integers, not str
這可能是或多或少因爲沒有什麼解碼。
如果您'出錯了,你需要把它們包含在這裏。 – Carcigenicate
可能與[如何在bash中創建一個python腳本「pipeable」]相同?(https://stackoverflow.com/questions/4429966/how-to-make-a-python-script-pipeable-in- bash)也許這個問題會有所幫助 –