为什么第二次调用:
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/