这两种写文件的方法有什么区别

What is the difference between these two methods of writing files

我用下面两种方法写了一个txt文件,得到了不同的结果

第一种方法:

with open("raw_train.txt", "a") as f0:
    for sent in reader_train.sents():
        f0.write(' '.join(sent))
        f0.write('\n')

第二种方法:

f1 = open("raw_train.txt", "a")
for sent in reader_train.sents():
    f1.write(' '.join(sent))
    f1.write('\n')

reader_train.sents() 是一个长度为 39832 的列表。方法 1 给了我正确的输出,但是方法 2 的输出只有 39812 行,原始列表的最后 20 个条目被删除。我无法理解这两种方法之间的区别。

在第二种方法中,您还应该在完成写入后关闭文件。这是为了确保将仍在缓冲区中的数据正确刷新到文件中。

f1 = open("raw_train.txt", "a")
for sent in reader_train.sents():
    f1.write(' '.join(sent))
    f1.write('\n')
f1.close()

'with' 语句负责在操作完成后自动关闭文件,因此您不必手动执行,这就是为什么它适用于您的第一种方法