Голый скрипт 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)

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

Другие вопросы по тегам