如果没有足够的输入,我如何遍历文件并引发自定义异常?
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)
我一直在关注 '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)