Python Subprocess将数据写入管道

时间:2014-08-28 14:36:03

标签: python

示例:

from subprocess import *
proc = Popen(['cat','-'], stdin = PIPE, stdout = PIPE)
msg = 'Through STDIN TO STDOUT' 
stdout_value = proc.communicate(msg)[0] 
print 'stdout:', stdout_value

输出:   stdout:通过STDIN TO STDOUT

  

在这个例子中,我已经将msg字符串传递给被调用者   程序(cat - )作为stdin,       如果被调用的程序是(passwd)命令,是否可以将两个stdin([密码值]和[验证密码值])传递给它?

2 个答案:

答案 0 :(得分:1)

是的,可以传递两行输入:

msg = 'line1\nline2\n'

答案 1 :(得分:0)

是和否。假设passwd从标准输入读取,您只需将两行写入proc的标准输入,方法是将msg设置为mypass\nmypass\n,或者只是进行两次调用到proc.communicate。但是,出于安全原因,passwd直接从终端读取,除非您明确地告诉它使用passwd --stdin(如果可用)从标准输入读取。