【发布时间】:2021-07-30 22:32:17
【问题描述】:
我正在做一些多线程网络抓取并将每个线程 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)
【问题讨论】:
-
其中一个文件的最后一行末尾没有换行符。所以它的最后一行正在与下一个文件的第一行合并。
-
不同线程是否写入同一个文件?
-
为什么要逐行读取文件?您可以通过
outfile.write(infile.read())一次性完成所有操作。但这并不能解决上述问题。 -
您能否通过其他可靠的方法(可能使用
cat *.txt > mergedfile)合并文件,然后将该文件与您的程序生成的合并文件进行比较?看到不同的线可能会很有用。 -
您计算行数的方式是否可能与您读行的方式不同?例如,也许您的行计数器比您的行阅读器多发现一个行尾字符,可能对 readlines() 感兴趣并检查行数,然后更仔细地查看行列表中
标签: python file merging-data