javascript - 来自nodeJS脚本的python shell向nodejs返回相同的值

标签 javascript python node.js

我根据我在其他应用程序中遇到的问题编写了以下程序,在下面的程序中,我从nodejs调用python脚本来完成一些工作,python脚本返回一些结果,这些结果在nodejs中进一步使用。

nodeJS:

var pythonShell = require('python-shell');

for(let i=0;i<3;i++){
  for(let j=0;j<3;j++){
    if(i==j){
        var options = {
          mode: 'text',
          scriptPath: 'python file path',
          pythonPath: 'python.exe path',
          env : process.env,
          args: [i]
        };
        console.log("====calling Python script for ====",i," ",j);   
          pythonShell.run('check.py', options, function(err, results){
            if(err){
                console.log(err);
                throw err;
            } 
            else {
              console.log("====Python result for ====",i," ",j);                    
              console.log(results[0]);
            }    
          });
    }
  }
}

check.py

import sys

k = sys.argv[1]
print(k)
limit=10000000
if(k==2):
    limit=3
if(k==1):
    limit=2
s=0
for i in range(limit):
    for j in range(10):
        s+=1

print(s," i = ",k)

nodeJs 脚本的输出

====calling Python script for ==== 0   0
====calling Python script for ==== 1   1
====calling Python script for ==== 2   2
====Python result for ==== 2   2
100000000  i =  2
====Python result for ==== 0   0
100000000  i =  0
====Python result for ==== 1   1
100000000  i =  1

从上面的代码中您可以看到,即使 forloop 对于 i=1 和 i=2 运行的时间更少,我也得到相同的输出,不知道发生了什么。 提前致谢。
edit :使用 python 脚本中传递的参数显示结果

====Python result for ==== 1   1
[ '1\r', '100000000  i =  1\r' ]
====Python result for ==== 0   0
[ '0\r', '100000000  i =  0\r' ]
====Python result for ==== 2   2
[ '2\r', '100000000  i =  2\r' ] 

最佳答案

这里的问题是 python 脚本将参数作为字符串传递。所以Python脚本内的条件总是变成false。您可以做的是将字符串转换为整数。 在你的 python 代码中尝试一下:

import sys

k = int(sys.argv[1])
limit=10000000
if(k==2):
    limit=3
if(k==1):
    limit=2
s=0
for i in range(limit):
    for j in range(10):
        s+=1

print(s," i = ",k)

在这里你可以做

k = int(sys.argv[1]) - 转换为整数

if(k=='2'):
   limit=3
if(k=='1'):
   limit=2

关于javascript - 来自nodeJS脚本的python shell向nodejs返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51978995/

相关文章:

javascript - 将识别字符串添加到用户代理字符串中以仅在 Android 应用程序中隐藏 div

python - statsmodel 属性错误 : module 'scipy.stats' has no attribute 'chisqprob'

node.js - 为什么 fs.write 字符串没有记录在 node.js 文档中?

node.js - 如何将 xlsx 文件上传到我自己的谷歌驱动器,然后将它们转换为谷歌电子表格并以编程方式获取可共享链接?

javascript - 如何在按 Tab 键时旋转 HTML 元素?

javascript - 使用一个函数进行多个 setIntervals (Javascript)

javascript - 使用JS执行MySQL查询及其涉及的安全问题

python - 将数据保存到pandas中的多个csv文件中

python - 从 Django 模型返回 JSON 格式的子属性

node.js - 在 TypeScript 中创建 swagger web 服务的正确方法是什么