有没有办法在单个函数中自动向多个raw_input()/ input()提供多个输入字符串

时间:2019-06-03 13:24:26

标签: python python-3.x

下面的代码针对python 2,但是对于python 3,您可以改为考虑使用input()。

我有一个“ set_pwd()”(无法修改,即是第三方库的一部分):

def set_pwd():
    x = raw_input("Enter the pwd")
    y = raw_input("Confirm the pwd")

现在,自己实现的函数正在尝试以尝试输入pwd的方式调用上述set_pwd()。我能够在第一个提示处应用pwd文本,但无法为后续的文本做此操作(用于pwd确认)。下面的代码:

def enter_pwd():
    import sys
    import StringIO
    f1 = sys.stdin
    f = StringIO.StringIO('My123PWD')
    sys.stdin = f
    set_pwd()  # Call to function
    f.close()
    sys.stdin = f1

我尝试探索f.next()(用于StringIO),但dint有所帮助。预先感谢。

1 个答案:

答案 0 :(得分:2)

您的代码被标记为Python3,所以我将给出一个Python3答案,但您提供的代码是Python2.7。您只需使用换行符(即\n)即可传递多个输入:

from io import StringIO
import sys


def set_pwd():
    x = input("Enter the pwd")
    y = input("Confirm the pwd")
    print()
    print("X:", x) # My123PWD
    print("Y:", y) # confirmed

f = StringIO('My123PWD\nconfirmed')
sys.stdin = f
set_pwd()  # Call to function
f.close()
sys.stdin = sys.__stdin__ # sys remembers stdin so just use this to restore it