javascript - 裸 Python-JS 脚本
问题描述
当使用 Python 的 Naked 库启动带参数的 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”的变量
解决方案
从Naked
文档:
execute_js() 函数在 Node.js 脚本文件上运行 execute() 函数。不要将要执行的命令作为第一个参数传递,而是将 Node.js 脚本文件路径作为第一个参数传递,将任何其他命令参数作为第二个参数传递(可选)
所以问题不在于python,而在于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)
您可以传递任意数量的参数,使用列表和循环进行调整,您可以传递动态数量的参数。
推荐阅读
- python-3.x - Selenium python Chrome - 动作类不发送_keys
- javascript - 修改父构造函数不影响子
- c# - Bot Framework v4 Bot 模拟器身份验证错误请求
- microsoft-graph-api - Microsoft Graph DELETE 订阅请求失败
- html - 基本(所有)链接标签是否需要 aria-label?
- angular - Angular 7 PWA - 离线模式下缺少字体真棒图标
- c++ - 为以命令式风格编写的 C 程序实现 OO 接口的模式
- javascript - Knockout JS:在 foreach 绑定中添加表单
- javascript - 如何禁用除一个以外的所有按钮,然后使用 jQuery 单击启用所有按钮?
- laravel - CKeditor 5 与 Laravel 图片上传