我在逐行读取文件而不是将文件读入内存时遇到一些麻烦。截至目前,我正在将文件读入内存,并且运行完美。但是,如果我尝试逐行读取文件,当我输入“print(B)”时,我只会得到零。我的问题是,有人有一个好的命令可以在 python 中逐行读取文件吗?我的代码如下所示:
def read(filename):
with open(filename, 'r') as f: #open the file
for line in f:
A = sum(float(line) for line in f)
with open(filename, 'r') as f:
B = sum(float(line)**2 for line in f)
print(B)
read('file.txt')
这是一种只需一次传递文件即可完成此操作的方法。你必须放弃漂亮的内置sum
并自己做:
def read(filename):
A, B = 0, 0
with open(filename) as f:
for line in f:
x = float(line)
A += x
B += x**2
print(A)
print(B)
另请注意,您实际上是在以一种奇怪的方式迭代文件的行,因为您有一个外循环for line in f
和一个内循环sum
也跑过for line in f
. Since f
是一个迭代器,这意味着外部循环只会到达第一行,内部循环将消耗所有其他行并对它们求和,然后外部循环没有其他要处理并退出。通过注意到,您应该能够看到这一点print(B)
语句只执行一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)