我想称呼类似yes "y"| foo bar
,但使用subprocess.Popen
。目前我使用这个:
yes = subprocess.Popen(['yes', '""'], stdout=subprocess.PIPE)
proc = subprocess.Popen(['foo', 'bar'], stdin=yes.stdout, stdout=subprocess.PIPE)
但是,当然,这在 Windows 上不起作用。我怎样才能做到这一点,以便它适用于每个平台?
最佳答案
p = subprocess.Popen(['/bin/cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE )
p.stdin.write("yes\nyes\nyes")
In [18]: p.communicate()
Out[18]: ('yes\nyes\nyes', None)
当然,您可以在两个线程中执行此操作(在一个线程中写入,在另一个线程中读取 Popen
实例)。
但是,这并不真正安全:
关于python - 如何自动将相同的答案传递给 subprocess.Popen ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080207/