Голый скрипт Python-JS
При использовании библиотеки Naked Python для запуска jv-скриптов с параметрами у меня все время возникает одна и та же проблема с параметром, который не определен. Это код Python:
from Naked.toolshed.shell import execute_js, muterun_js
pi=str(8)
response = execute_js('file.js', pi)
И вот код file.js:
console.log(pi);
Как видите, это очень простой код, потому что я не могу понять, как отправить параметр, не объявив его. Я видел подобный вопрос, но основная проблема здесь в том, что я не знаю, как объявить в коде javascript переменную, которая исходит из "out"
1 ответ
От <tcode id="4287027"></tcode> документы:
Функция execute_js() запускает функцию execute () в файле сценария Node.js. Вместо того, чтобы передавать команду, которая будет выполняться в качестве первого параметра, передайте путь к файлу сценария Node.js в качестве первого параметра и любые дополнительные аргументы команды в качестве второго параметра (необязательно)
Итак, проблема не в питоне, а в
Node.js
программа.
Здесь вы можете найти описание того, как передавать аргументы программе узла при запуске с консоли.
Думаю, решение вашей проблемы - изменить программу узла следующим образом:
var pi = process.argv[2];
console.log(pi);
Где вы выбираете третий аргумент, поскольку первые два являются соответственно путем node.js и текущим путем к программе.
ОБНОВЛЕНИЕ: если вы хотите передать более 1 переменной, вам просто нужно передать все переменные в виде пустой разделенной строки в качестве второго аргумента
execute_js
. Пример:
Сторона Python
pi = 8
rho = 10
arg_in = f"{pi} {rho}" # for older versions of python you can use "{pi} {rho}".format(pi=pi, rho=rho)
response = execute_js('file.js', arg_in)
Сторона Js
var pi = process.argv[2],
rho = process.argv[3];
console.log(pi, rho)
Вы можете передать столько аргументов, сколько хотите, адаптируя это со списками и для циклов, вы можете передать динамическое количество аргументов