为什么合并后的文件比输入文件少一行?

问题描述

我正在做一些多线程网络抓取并将每个线程 100 行写入 100 个文件。我检查以确保每个文件都有 100 行,然后我合并。然后我检查以确保合并的文件有 10000 行。只是这一次,合并后的文件似乎少了一行。所有其他运行都有 10000 行。知道为什么合并的文件会少一行吗?这是我用来合并的代码。我检查过所有输入文件都有 100 行。他们都这样做。所以我不知道为什么合并后的文件少了一行。

with open(rf"data\run12.txt","w",encoding="utf-8") as outfile:
    for fname in filenames:
        with open(fname,"r",encoding = "utf-8") as infile:
            for line in infile: 
                outfile.write(line)

解决方法

当文件的最后一行不是新行时会发生这种情况。我的一个输入文件最后没有写换行符,所以我在每个输入文件中有 100 行,但输出中只有 9999 行,因为在一个输入文件的末尾缺少换行符导致其最后一个行与相邻输入文件的第一行合并。