Использование argparse в python для анализа всего JSON - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь проанализировать целый Json в простом аргументе с использованием библиотеки ARGPARSE, дело в том, что он внезапно останавливается, когда сталкивается с различными элементами внутри сына, такими как "-" и "".

Вот тестовый код:

#parse.py
import argparse
parser = argparse.ArgumentParser(description='JSON_test')
parser.add_argument('-contenido', action='store', dest='CONTENIDO',
                    help='JSON content')
args = parser.parse_args()
C = args.CONTENIDO
print (C)

Это пример работающего кода

python parse.py -contenido """{"desde": "2020-03-01","hasta": "2020-03-31","plantas": [{"id": 6,"nombre": "MDS","inversores": [{"id": "Ingeteam 0237","energa": 2152.8070,"pr": 61.5299,"disponibilidad": 81.1770,"factorPlanta": 15.5313}, {"id": "Ingeteam  0538","energa": 2167.5898,"pr": 61.9315,"disponibilidad": 81.0459,"factorPlanta": 15.6381}, {"id": "Ingeteam 0236","energa": 2168.1885,"pr": 61.9511,"disponibilidad": 80.9856,"factorPlanta": 15.6426}, {"id": "Ingeteam 0563","energa": 2206.8702,"pr": 63.0825,"disponibilidad": 80.9455,"factorPlanta": 15.9219}]"""

и, наконец, ошибка

parse.py: error: unrecognized arguments: 0237,energia: 2152.8070,pr: 61.5299,disponibilidad: 81.1770,factorPlanta: 15.5313}, {id: Ingeteam 0538,energia: 2167.5898,pr: 61.9315,disponibilidad: 81.0459,factorPlanta: 15.6381}, {id: Ingeteam 0236,energia: 2168.1885,pr: 61.9511,disponibilidad: 80.9856,factorPlanta: 15.6426}, {id: Ingeteam 0563,energia: 2206.8702,pr: 63.0825,disponibilidad: 80.9455,factorPlanta: 15.9219}]"

Наша архитектура не позволяет мы используем файл для анализа, так что обходной путь не сработает :(. Что я могу сделать? Я прочитал много сообщений SOF и завтра опробую их, но думаю, что они не подойдут c проблема, наш json очень большой, и нам нужно запустить его из одного аргумента. Заранее спасибо!

1 Ответ

2 голосов
/ 07 апреля 2020

Используйте одну одинарную кавычку для переноса аргумента командной строки, а не тройные двойные кавычки. Тройные двойные кавычки являются синтаксисом Python, а не синтаксисом оболочки.

python parse.py -contenido '{"desde": "2020-03-01","hasta": "2020-03-31","plantas": [{"id": 6,"nombre": "MDS","inversores": [{"id": "Ingeteam 0237","energa": 2152.8070,"pr": 61.5299,"disponibilidad": 81.1770,"factorPlanta": 15.5313}, {"id": "Ingeteam  0538","energa": 2167.5898,"pr": 61.9315,"disponibilidad": 81.0459,"factorPlanta": 15.6381}, {"id": "Ingeteam 0236","energa": 2168.1885,"pr": 61.9511,"disponibilidad": 80.9856,"factorPlanta": 15.6426}, {"id": "Ingeteam 0563","energa": 2206.8702,"pr": 63.0825,"disponibilidad": 80.9455,"factorPlanta": 15.9219}]'

Вы также можете использовать одну двойную кавычку для переноса аргумента, но вам нужно будет экранировать каждую двойную кавычку. цитата в аргументе.

...