示例:
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([密码值]和[验证密码值])传递给它?
答案 0 :(得分:1)
是的,可以传递两行输入:
msg = 'line1\nline2\n'
答案 1 :(得分:0)
是和否。假设passwd
从标准输入读取,您只需将两行写入proc
的标准输入,方法是将msg
设置为mypass\nmypass\n
,或者只是进行两次调用到proc.communicate
。但是,出于安全原因,passwd
直接从终端读取,除非您明确地告诉它使用passwd --stdin
(如果可用)从标准输入读取。