我正在使用节点.js,电子.js,虚拟用户.js还有Python。我正在用python来打印。我正在使用pythonshellnpm库(https://www.npmjs.com/package/python-shell)。在python中,我使用的是pywin32 和sys库来打印和获取我从JavaScript代码传递的参数。在我的JavaScript代码中,我做了如下操作,输出超过4000个字符。这是我要打印的字符串。但并不是所有的台词都被打印出来。传递值时是否有字符限制?如果是这样的话,我怎么知道这个极限,有人能给我建议一个更好的方法吗
const PythonShell = require("python-shell");
var options = {
pythonOptions: ['-u'],
scriptPath: __dirname,
args: [printerName, output, imgPath]
};
PythonShell.run("../../../../extras/script/printer.py", options, function (err, results) {
if (err) throw err;
for(var k in results){
console.log(results[k])
}
});
命令行有一个最大大小,这取决于您的操作系统(可能还取决于您的设置)。1该命令行必须足以容纳Python解释器的名称、脚本路径、
-u
和所有(正确引用的)参数。在你的系统上可能是4096,所以当你有大约4000个字符的参数时,事情就开始失败了。你知道吗有两种解决办法。你知道吗
首先,如果脚本像许多Unix工具那样通过循环使用参数并独立地传递它们,那么您可以一次使用50个参数重复调用它。这与^{} 用于大型参数列表的技巧基本相同。你知道吗
其次,可以将脚本更改为从文件或标准输入读取其输入,而不是从命令行参数读取。你知道吗
你还没有向我们展示你的代码,但假设它看起来是这样的:
您可以将其更改为:
但现在你必须改变主叫方。我不知道PythonShell,我的JS也很生疏,但是从docs的例子来看,它看起来应该是这样的:
使用文件而不是stdin非常相似。它看起来像这样:
然后调用它更接近原始代码:
1。在Windows上,它比这更复杂。在某些版本中,命令行参数和环境变量集必须在另一个限制下,UTF-16和8位输入的限制可能不同,如果您使用模拟POSIX风格API的MSVCRT函数而不是直接调用Windows API,则会有其他限制,等等。
正如您在python-shell documentation中所看到的,您可以使用
pyshell.send()
将数据发送到python stdin—这没有限制。你知道吗相关问题 更多 >
编程相关推荐