逐行读取文件而不是将文件读入内存

2024-03-17

我在逐行读取文件而不是将文件读入内存时遇到一些麻烦。截至目前,我正在将文件读入内存,并且运行完美。但是,如果我尝试逐行读取文件,当我输入“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(使用前将#替换为@)

逐行读取文件而不是将文件读入内存 的相关文章

随机推荐