出现EOF错误,无法找出原因

时间:2019-04-25 14:00:34

标签: python python-3.x

在下面的代码中,我收到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

1 个答案:

答案 0 :(得分:0)

sys.stdin.read()仅在以Ctrl-D终止的行中读取,而input()在收到Enter键后将在一行中读取。正如Chepner所说,您必须使用Ctrl-D关闭标准输入,以使该函数在行中读取。