在 python subprocess.popen 中通过标准输入发送输入
send input through stdin in python subprocess.popen
我想通过 subprocess 模块启动 nodejs 并向其发送输入但遇到以下错误...
代码:
import subprocess
def popen(self):
cmd = "node"
args = "--version"
spawn = subprocess.Popen(cmd,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
(out,err)=spawn.communicate(args)
print(out)
print(err)
结果:
[stdin]:1
--version
^
ReferenceError: version is not defined
at [stdin]:1:1
at Script.runInThisContext (vm.js:132:18)
at Object.runInThisContext (vm.js:309:38)
at internal/process/execution.js:77:19
at [stdin]-wrapper:6:22
at evalScript (internal/process/execution.js:76:60)
at internal/main/eval_stdin.js:29:5
at Socket.<anonymous> (internal/process/execution.js:198:5)
at Socket.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1327:12)
预期结果:
v14.14.0
基本上,我想启动节点并与其通信,在需要时发送输入。
选择 Popen 而不是 运行 以更好地控制过程,并且 shell 设置为 true,因此 OS 变量被视为 ex。 $路径
此代码相当于您开始 node
,然后键入 --version
并按回车键。这样,node 将尝试将其解释为 JavaScript 语句,并且它不识别名称 version
。相反,您应该将其作为命令行参数传递:
subprocess.Popen(["node", "--version"], ...)
我们也可以使用pythonoS包来运行操作系统命令
使用 os 封装 popen 方法并使用 read 函数读取输出
代码:
进口os
流 = os.popen('node --version')
输出=stream.read()
打印(输出)
我想通过 subprocess 模块启动 nodejs 并向其发送输入但遇到以下错误...
代码:
import subprocess
def popen(self):
cmd = "node"
args = "--version"
spawn = subprocess.Popen(cmd,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
(out,err)=spawn.communicate(args)
print(out)
print(err)
结果:
[stdin]:1
--version
^
ReferenceError: version is not defined
at [stdin]:1:1
at Script.runInThisContext (vm.js:132:18)
at Object.runInThisContext (vm.js:309:38)
at internal/process/execution.js:77:19
at [stdin]-wrapper:6:22
at evalScript (internal/process/execution.js:76:60)
at internal/main/eval_stdin.js:29:5
at Socket.<anonymous> (internal/process/execution.js:198:5)
at Socket.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1327:12)
预期结果:
v14.14.0
基本上,我想启动节点并与其通信,在需要时发送输入。
选择Popen 而不是 运行 以更好地控制过程,并且 shell 设置为 true,因此 OS 变量被视为 ex。 $路径
此代码相当于您开始 node
,然后键入 --version
并按回车键。这样,node 将尝试将其解释为 JavaScript 语句,并且它不识别名称 version
。相反,您应该将其作为命令行参数传递:
subprocess.Popen(["node", "--version"], ...)
我们也可以使用pythonoS包来运行操作系统命令 使用 os 封装 popen 方法并使用 read 函数读取输出
代码:
进口os
流 = os.popen('node --version')
输出=stream.read()
打印(输出)