我正在尝试在命令提示符下获取用户的输入。程序以“cat text.txt | ./thescript.py”的方式从文本文件中读取数据
在所讨论的脚本中,所有数据都已被读入、处理并放入列表列表中。
现在我正在遍历该列表以查找有问题的项目。代码基本上是这样的:
for invoice in parsedlist:
if invoice[-1] == 3:
sys.stderr.write("triple duplicate at " + invoice[2]+' : ' + invoice[3]+"\n")
sys.stderr.write("continue Y or N \n")
answer = raw_input("Type your answer here")
if answer == 'N':
sys.exit(1)
else:
pass`
此代码导致 EOFError。据我所知,stdin 在这种情况下是从 cat 读取的,因为它已经达到 EOF,这就是为什么 raw_input 在这里得到 EOF? (我认为)目标是让脚本向标准错误打印警告,让我选择是忽略警告并继续还是完全退出。最后,所有输出都会输出到标准输出,并且不会包含任何错误警告或响应。我见过使用 try/exception 的示例,但在这种情况下我无法理解它。 (例如,为什么 raw_input 不等待输入?)
我想我可能只是以错误的方式解决了这个问题,因此产生了一个可以更好地绕过然后跳过的问题。一如既往地感谢任何帮助。
请您参考如下方法:
这在 Windows 下有效(我通过运行 python cons.py < cons.py 对其进行了测试并且能够看到提示并且没有收到关于 EOF 的错误):
import sys
for line in sys.stdin:
print line
sys.stdin = open('CON', 'r')
q = raw_input('---->')
在 Unix 下,您可能只需要用/dev 目录中的内容替换“CON”即可。
