我有一个要在 Python (2.6.5) 中运行的脚本,它遵循以下逻辑:
- 提示用户输入密码。它看起来像(“输入密码:”)(*注意:输入不会回显到屏幕)
- 输出无关信息
- 提示用户响应(“Blah Blah filename.txt blah blah (Y/N)?:”)
最后一个提示行包含我需要解析的文本(filename.txt)。提供的响应无关紧要(只要我可以解析该行,程序实际上可以在不提供响应的情况下退出这里)。
我的要求有点类似于Wrapping an interactive command line application in a Python script,但那里的响应似乎有点令人困惑,即使 OP 提到它不适合他,我的仍然挂起。
通过环顾四周,我得出的结论subprocess
是最好的方法是这样做,但我遇到了一些问题。这是我的 Popen 行:
p = subprocess.Popen("cmd", shell=True, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
当我调用 a
read()
或readline()
onstdout
时,提示是屏幕上的打印机并且它挂起。如果我调用
write("password\n")
forstdin
,则提示将写入屏幕并挂起。中的文本write()
未写入(我没有将光标移动到新行)。如果我打电话
p.communicate("password\n")
,与 write() 相同的行为
我在这里寻找一些关于最佳输入方式的想法,stdin
如果你觉得慷慨的话,可能如何解析输出中的最后一行,尽管我最终可能会弄清楚。