子进程管道stdin而不使用文件

duc*_*cin 9 python pipe process

我有一个主进程,我运行一个子进程,stdin是我想要管道的.我知道我可以使用文件来做到这一点:

import subprocess
subprocess.call('shell command', stdin=open('somefile','mode'))
Run Code Online (Sandbox Code Playgroud)

有没有选项使用自定义标准输入管道没有实际的硬盘驱动器文件?有没有选项,例如,使用字符串列表(每个列表元素将是换行符)?

我知道python子进程调用.readline()管道对象.

Ada*_*mKG 5

首先,使用subprocess.Popen- .call只是它的快捷方式,您需要访问该Popen实例,以便您可以写入管道.然后将subprocess.PIPE旗帜作为stdinkwarg.就像是:

import subprocess
proc = subprocess.Popen('shell command', stdin=subprocess.PIPE)
proc.stdin.write("my data")
Run Code Online (Sandbox Code Playgroud)

http://docs.python.org/2/library/subprocess.html#subprocess.PIPE