提问人:Ronald Becerra 提问时间:7/4/2023 最后编辑:Ronald Becerra 更新时间:7/4/2023 访问量:42
为什么 PythonShell.run 使用两个参数并使用 .then(),而不能使用三个参数(回调函数作为第三个参数)?
Why does PythonShell.run work with two arguments and using a .then() while doesn't with three arguments (callback function as third)?
问:
我在 Node.js 中运行了这个脚本,它工作正常:
const {PythonShell} = require("python-shell");
PythonShell.run("hello.py", null).then(result => {
try{
console.log(result[0]);
}
catch(err){
console.log("err = ", err);
}
});
Python 中的脚本 “hello.py” 只有指令 “print('Hello from Python')”,因此在运行此 Node.js 脚本时,输出为 'Hello from Python'。
但是,如果我稍微修改一下它以不使用 .then(...) 而是使用回调函数,那么我没有得到任何输出,这是因为它从未进入回调函数,因为我已经证实了在开头放置了“console.log”:
const {PythonShell} = require("python-shell");
PythonShell.run("hello.py", null, function (err, result) {
if (err) throw err;
console.log(result[0]);
});
我尝试在第二个参数中放置一个选项对象,该参数具有“hello.py”文件的绝对路径,但它仍然不起作用。
我错过了什么?
python-shell 的版本为 5.0.0。
答:
1赞
spikehd
7/4/2023
#1
不能将回调与 一起使用。PythonShell.run()
看一下 run
函数的源代码,它只需要两个参数。这意味着您的第三个参数(回调函数)永远不会出现,因为该函数不是为了接受一个参数而编写的。
您应该使用的原因是因为返回一个 Promise。.then()
PythonShell.run()
评论
0赞
Ronald Becerra
7/4/2023
有没有可能随着版本而改变?我看过一些例子,他们将其与第三个参数一起使用:github.com/extrabacon/python-shell/issues/22
1赞
spikehd
7/4/2023
鉴于您链接的问题是 8 年前的,是的,我想从那时起😄它就发生了变化
评论