我正在尝试创建一个函数,该函数将打开的文件作为参数,读取文件中的整数,这些整数都在自己的行上,然后创建这些整数的列表。当有空行时,函数应该停止读取文件。这就是我所坚持的。
def load_ints(file):
lst = []
x = 1
while x == 1:
for line in file:
if len(line.strip()) != 0:
load = line.split()
load = [int(i) for i in load]
lst = lst + load
else:
x = 2
x = 2
return lst
我正在测试的文件如下所示:
1
0
-12
53
1078
Should not be read by load_ints!
len(line.strip()) != 0:
不工作, 它目前给了我一个 ValueError: invalid literal for int() with base 10: 'Should'
请您参考如下方法:
您需要在 x = 2 之后放置一个 break
else:
x = 2
break
否则,for 循环将继续遍历文件。它读取了空白行,执行了else 条件,然后进行了处理行。因此它尝试处理“应该...”行,但失败了,因为“应该...”不是整数。
此外,我不明白您为什么要使用 while 语句。 for 循环应该足以遍历文件并处理每一行,而我建议的 break 将在您点击空白行时退出循环。
