如果没有足够的输入,我如何遍历文件并引发自定义异常?

How can I iterate through a file and raise a custom Exception if there is not enough input?

我一直在关注 'Python for dummies' 一本书,但有一个例子没有按我的预期打印出结果。

class Error(Exception):
    pass
class NotEnoughStuffError(Error):
    pass
try:
    thefile = open('people.csv')
    line_count = len(thefile.readlines())
    if line_count < 2:
        raise NotEnoughStuffError
except NotEnoughStuffError:
    print('Not Enough Stuff')
except FileNotFoundError:
    print('File not found')
    thefile.close()
else:
    for line in thefile:
        print(line)
    thefile.close()
    print('Success!')

问题 1:打印时,应该显示文件中的所有行。但是,它只打印 'Success!' 为什么没有打印文件中的内容?

问题二:我替换了代码:

class Error(Exception):
    pass
class NotEnoughStuffError(Error):
    pass

class NotEnoughStuffError(Exception):
    pass

他们return结果一样吗? 'Exception' 是 Python 中的内置 class 吗?

问题是因为您使用了 readlines() 并将指针移至文件末尾,当您稍后使用 for line in thefile: 时,它会尝试从文件末尾读取。它从文件末尾读取任何内容,也没有显示任何内容。

你会有一个带有变量行的 assess 列表

 all_lines = thefile.readlines()
 line_count = len(all_lines)

以后使用这个列表

 for line in all_lines:
    print(line)

或者在尝试再次读取数据之前,您必须将指针移至文件开头

 thefile.seek(0)

 for line in thefile:
    print(line)