在下面的代码中,我收到EOF错误。我无法找出原因。如果我使用input()而不是sys.stdin.read()代码,效果很好。我认为我的问题类似于链接Python raw_input following sys.stdin.read() throws EOFError
中的问题。当我执行print(input_str)时,它不打印任何内容,控制台仅跳过一行。它不要求任何输入。 打印input_list时,生成以下错误。 NameError:名称“ input_list”未定义。
import ast,sys
input_str = sys.stdin.read()
input_list = ast.literal_eval(input_str)
C = input_list[0]
F = input_list[1]
H = input_list[2]
k=set(C).intersection(set(F)).intersection(set(H))
代码错误是:
Traceback (most recent call last):
File "C:\Users\z003p4nk\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3267, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-14-dd3473bf412a>", line 5, in <module>
input_list = ast.literal_eval(input_str)
File "C:\Users\z003p4nk\AppData\Local\Continuum\anaconda3\lib\ast.py", line 46, in literal_eval
node_or_string = parse(node_or_string, mode='eval')
File "C:\Users\z003p4nk\AppData\Local\Continuum\anaconda3\lib\ast.py", line 35, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line unknown
^
SyntaxError: unexpected EOF while parsing
答案 0 :(得分:0)
sys.stdin.read()
仅在以Ctrl-D终止的行中读取,而input()
在收到Enter键后将在一行中读取。正如Chepner所说,您必须使用Ctrl-D关闭标准输入,以使该函数在行中读取。