这两种写文件的方法有什么区别
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' 语句负责在操作完成后自动关闭文件,因此您不必手动执行,这就是为什么它适用于您的第一种方法
我用下面两种方法写了一个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' 语句负责在操作完成后自动关闭文件,因此您不必手动执行,这就是为什么它适用于您的第一种方法