在 Python 3.7+ 中使用 subprocess.run 的多个输入

Multiple inputs using subprocess.run in Python 3.7+

假设我有一个名为 input_test.py 的 python 脚本:

first_name = input()
print(name)

从另一个名为 main.py 的 python 脚本,我可以 运行 input_test.py 如下:

import subprocess
file = home_dir + "input_test.py"
result = subprocess.run([sys.executable, file], input="Dan", capture_output=True, text=True)

这非常适合我的目的。不过,有时我可能需要多个输入。假设我们有 input_test2.py:

first_name = input()
last_name = input()
print(first_name, last_name)

如何使用 subprocess.run 传递两个(或更多)输入?如果那不可能,有没有办法在 python 内做到这一点?顺便说一句,我正在 Windows 10(含)工作。

How do I pass two inputs (or potentially more) using subprocess.run?

input 函数在收到换行符时停止读取...因此您只需要用换行符分隔输入即可:

>>> import subprocess
>>> subprocess.run(['python', 'names.py'], input='Joe\nBiden\n', capture_output=True, text=True)
CompletedProcess(args=['python', 'names.py'], returncode=0, stdout='Joe Biden\n', stderr='')