我想调用类似java.lang.Class
的内容,但使用Class<?> getProviderClass(String customerType){
}
。目前我用这个:
yes "y" | foo bar
但是,当然,这不会在Windows上运行。我怎么能这样做才能在每个平台上运行?
答案 0 :(得分:1)
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
实例)。
然而,这并不是真的安全,但是:
答案 1 :(得分:0)
To emulate a shell pipeline yes "y" | foo bar
in Python:
#!/usr/bin/env python
from subprocess import Popen, PIPE
foo_proc = Popen(['foo', 'bar'], stdin=PIPE, stdout=PIPE)
yes_proc = Popen(['yes', 'y'], stdout=foo_proc.stdin)
foo_output = foo_proc.communicate()[0]
yes_proc.wait() # avoid zombies
要在Python中管道输入(不使用yes
实用程序),您可以使用threads或async. I/O input_iterator
为itertools.repeat(b'y' + os.linesep.encode())
。