【问题标题】:(Python 3.x)Syntax Error EOF while parsing when reading a line from a file.(Python 3.x) 从文件中读取一行时解析时出现 EOF 语法错误。
【发布时间】:2017-11-06 11:35:38
【问题描述】:

(Python 3.x)所以我在读取文件时不断收到语法错误。我有这个问题有一段时间了。到目前为止,我一直在研究程序的其他部分(未显示),但无法解决此语法错误。我很困扰。 我对发布语法错误感到内疚,但我没有想法。

这里是错误:语法错误:解析时意外 EOF: , line 0, pos 0 @ line 8

代码:

def main(): 
    filename = 'p4input.txt'
    infile = open(filename, "r")
    command = 0
    while command != 3 and command < 3:
        command = eval(infile.readline()) #Problem here 
        convert = eval(infile.readline())
        print(command)

        print(convert)
    print("done")
main() 

输入文件(p4input.txt) 有以下数据:

2
534
1
1101

Complete traceback:
 Traceback (most recent call last):
      File "C:/Users/Ambrin/Desktop/CS 115/TESTER.py", line 16, in <module>
        main()
      File "C:/Users/Ambrin/Desktop/CS 115/TESTER.py", line 8, in <module>
        command = eval(infile.readline())
      File "<string>", line 0, in ?
    Syntax Error: unexpected EOF while parsing: <string>, line 0, pos 0

【问题讨论】:

  • 语法错误位于您尝试评估的“p4input.txt”的数据行中:您无法评估空行。通常应避免使用eval(和exec),因为它们可能存在安全风险。有关详细信息,请参阅 SO 老将 Ned Batchelder 的Eval really is dangerous
  • @PM2Ring 哦,好的。我现在明白了。谢谢!

标签: python python-3.x syntax-error


【解决方案1】:

发生这种情况是因为当您到达文件末尾时,readline() 返回一个空字符串,因此您正在执行eval('')。你需要检查一个空字符串和break

正如上面评论中指出的,您可能不应该使用eval。如果您的所有输入都是整数,您可以使用 int() 代替。不过,您仍然需要检查 ''

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多