在 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='')
假设我有一个名为 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='')