Запустить python скрипт с аргументами в javascript с exec - PullRequest
2 голосов
/ 20 февраля 2020

У меня есть входы, такие как широта, долгота и частота. Я хотел бы выполнить эту команду для файла JS:

exec(`python test.py '{"latitude":${latitude},"longitude":${longitude},"frequency":${frequency}}'`, (error, stdout, stderr) => { .... })

Но при запуске у меня появляется следующая ошибка:

error: Command failed: python test.py '{"latitude":48.118097,"longitude":-1.636503,"frequency":2.4}'
Traceback (most recent call last):
  File "test.py", line 16, in <module>
    data=json.loads(sys.argv[1])
  File "C:\Users\****\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Users\****\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\****\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

И мой сценарий python начинается с

import sys
import json
data=json.loads(sys.argv[1])

Более того, если я просто запускаю сценарий python без аргументов и записываю случайные данные непосредственно в сценарий python, это работает. Поэтому я думаю, что это проблема аргументов, написанных в команде exe c.

Не могли бы вы помочь мне.

1 Ответ

1 голос
/ 20 февраля 2020

Может быть, добавить двойные кавычки?

python test.py '\"{"latitude":48.118097,"longitude":-1.636503,"frequency":2.4}\"'
...