如何使用Python从Bash提示符捕获用户输入

时间:2014-04-15 03:29:04

标签: python mysql bash subprocess

我正在运行mysql_secure_installation,提示用户输入root数据库密码,并要求用户为其他一些初始设置选项输入Yes或No。我如何捕获用户输入的root密码?

我在想:

capture = subprocess.Popen(['mysql_secure_installation'], stdout=subprocess.PIPE)
root_pwd = capture.communicate()

我还想将默认选项提供给其他提示。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

要透明地拦截子进程的用户输入,可以使用pty.spawn()

import os
import pty

def read(fd):
    data = os.read(fd, 512)
    print('got input %r' % data)
    return data

pty.spawn('mysql_secure_installation', stdin_read=read)