为 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(...)
.
换行
我是使用子流程的新手,我想知道我们如何输入多个输入。
我已经执行了以下代码尝试自己做:
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(...)
.