python - 在Python中多次计算文件中的行数

标签 python io

为什么第二次调用:

num_lines = len(file.read().split("\n")) - 1

返回 0 而不是正确的值?

with open("Data.txt", "r+") as file:
    num_lines = len(file.read().split("\n")) - 1
    print("Old num_lines: " + str(num_lines))

    # Add 10 new lines of data to end of the file
    for i in range(num_lines, num_lines + 10):
        file.write("{}, {}\n".format(i, random.randint(0, 10)))

    num_lines = len(file.read().split("\n")) - 1
    print("New num_lines: " + str(num_lines))

最佳答案

阅读文件就像阅读一本书,书签会随着阅读的进行而移动。

当你打开一个文件时,你在初始位置有那个“书签”,在阅读了它的一些部分之后,它会被移动以记住下一个要读取的字节。

你的第二个

 num_lines = len(file.read().split("\n")) - 1

在读取整个文件后,与所有其他读取位于同一 block 中。 “书签”已在文件末尾。

我建议在第一次读取时保存初始行数,而不是重新读取文件:

old_num_lines = num_lines = len(file.read().split("\n")) - 1

无论如何回到文件的开头也很简单,通过seek()方法:

file.seek(0)

关于python - 在Python中多次计算文件中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61666123/

相关文章:

python - 遵循某种概率分布,为给定大小的位串生成转移概率矩阵

java - java中文件的状态

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

python - 如何读取一行并忽略一些单词(python)

io - Perl6:来自 IO::Path 的 `dir` 是否总是以正确的方式解码文件名?

python - 使用 for 循环将字母连接到字符串

Python 搜索带有键值的 Json

python - 总结具有重复列 Pandas 的多行

Python 等效于 C 结构(将应用程序从 C 移植到 python)

c# - 从二进制文件读取字符串,不同的编码