下面的代码针对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有所帮助。预先感谢。
答案 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