Python子进程标准管道
你好,我有这样的问题。我需要通过子流程登录。因此,我想创建一个输入管道,并向其写入登录名和密码。因此,我尝试执行以下操作:Python子进程标准管道,python,subprocess,Python,Subprocess,你好,我有这样的问题。我需要通过子流程登录。因此,我想创建一个输入管道,并向其写入登录名和密码。因此,我尝试执行以下操作: sp = subprocess.Popen([cmd],stdout=subprocess.PIPE, stdin=subprocess.PIPE) i, o = sp.communicate() 在第一个字符串之后,我有这样一个错误tcgetattr:device的ioctl不合适。我没有o的值。在这种情况下,如何将smth写入管道。感谢您的帮助。发件人: 可选输入参数
sp = subprocess.Popen([cmd],stdout=subprocess.PIPE, stdin=subprocess.PIPE)
i, o = sp.communicate()
在第一个字符串之后,我有这样一个错误tcgetattr:device的ioctl不合适
。我没有o
的值。在这种情况下,如何将smth写入管道。感谢您的帮助。发件人:
可选输入参数应该是要发送给子对象的数据
过程
…请注意,如果要将数据发送到进程的stdin,则需要 使用stdin=PIPE创建Popen对象。同样地,为了得到任何东西 除了结果元组中的None之外,还需要指定stdout=PIPE 和/或stderr=管道也 i、 例如,要将输入传递给子流程,请指定
input
参数;要获取非None
o
值,必须指定stderr=PIPE
在许多情况下,密码提示和密码本身不是写入管道或从管道读取,而是直接从终端写入/读取,即,除非命令允许设置通过stdin接受密码的选项,否则您可能需要伪tty来传递密码。您可以使用
pty
与子进程交互。请参见中的第一个原因,您没有为stderr
提供任何内容:stderr=subprocess.PIPE