为 subprocess.run 输入提供多个参数

give multiple arguments to subprocess.run input

我是使用子流程的新手,我想知道我们如何输入多个输入。

我已经执行了以下代码尝试自己做:

process = subprocess.run(['python', '-c', 'print((int(input())+int(input()))*int(input()))'], 
                         input=[7,3,8],text=True, capture_output=True)

print(process.stderr)

但是,在 运行 代码中,我收到一条错误消息,告诉我输入参数必须是一个字符串(请注意,在输入 text=False 时,我收到了相同类型的错误消息输入必须是类似字节的)。

那么,如果有人能帮助我找到如何向子进程输入多个输入,我将不胜感激。

当您使用input函数获取输入时,您实际上是从标准输入中读取一行二进制数据并将其解码为字符串。您可以传递一个字节对象(如 input=b"7\n3\n8"),或者您可以传递一个普通字符串(如 input="7\n3\n8")并让它通过传递 text=True.[=17= 来为您解码。 ]

此外,您应该为输出检查 process.stdout 而不是 process.stderr。请注意,它是一个字符串,因此您需要将 int(...).

换行