如何解决由节点js运行时,以python脚本提交数据
首先,我对我的英语不好感到抱歉
我有一个python代码,可以为电报创建一个cli帐户,如下所示:
from pyrogram import Client
from pyrogram.raw import functions
api_id = someNumber
api_hash = "someHash"
with Client("my_account",api_id,api_hash) as app:
print('Bot is online...')
我使用node.js代码运行python脚本,如下所示:
if(command == 'run cli'){
var spawn = require("child_process").spawn;
var process = spawn('python',["python/hello.py"]);
process.stdout.on('data',function(data) {
console.log(data.toString());
});
}
输出为:
Enter phone number or bot token:
如何从node.js中给我电话号码?
实际上,当我通过“ python hello.py”使用cmd运行python脚本时,它想要我电话号码,然后将其写入,然后按Enter键并完成操作。太简单。
但是在这种情况下,我不知道该怎么办。
解决方法
我认为最简单的方法(如果可能)是通过sys.argv
修改python脚本以接受命令行参数。
因此,您需要将python程序修改为此:
from pyrogram import Client
from pyrogram.raw import functions
import sys # we need the sys module to access these arguments I'm talking about
phone_number = sys.argv[1] # the phone number will be the first (and only,I'm assuming) argument. You can pass multiple arguments,and access them with `sys.argv[2]`,`sys.argv[3]`...etc.
api_id = someNumber
api_hash = "someHash"
with Client("my_account",api_id,api_hash,phone_number=phone_number) as app: # pass the phone number to Client
print('Bot is online...')
现在您已经将电话号码存储在变量phone_number
中,并且该电话号码已传递到Client
,因此您在Python端应该会很好。
但是,在您的节点脚本中,您实际上必须传递作为参数,并且可以通过将参数添加为"python/hello.py"
数组的元素来实现是这样的一部分:
if(command == 'run cli'){
var spawn = require("child_process").spawn;
var process = spawn('python',["python/hello.py","PHONE NUMBER GOES HERE"]);
process.stdout.on('data',function(data) {
console.log(data.toString());
});
}
...你应该很好。
请注意,我尚未测试此代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。