我有大约50gb的文本文件,我正在检查每行的前几个字符,并将这些字符写入为起始文本指定的其他文件。
例如。 我的输入包含:
cow_ilovecow
dog_whreismydog
cat_thatcatshouldgotoreddit
dog_gotitfromshelter
...............
所以,我想把它们分为牛、狗和猫(大约200种)三类 所以
if writeflag==1:
writefile1=open(writefile,"a") #writefile is somedir/dog.txt....
writefile1.write(remline+"\n")
#writefile1.close()
那么,什么是最好的方式,我应该关闭?否则,如果我保持打开,那么writefile1=open(writefile,"a")
做的是正确的事情吗?
你一定要尽量少打开/关闭文件
因为即使与文件读/写相比,文件打开/关闭也要贵得多
考虑两个代码块:
以及
第一个需要0.025s而第二个需要0.309s
一直开着!否则,您会告诉系统您已经完成了所有时间的写入,它可能会决定将它刷新到磁盘上,而不是缓冲它。显然,磁盘写入比磁盘写入要贵得多。
如果您想附加到文件而不覆盖它,那么可以,
a
是正确的模式。使用
with
语句,它会自动为您关闭文件,执行with
块中的所有操作,因此它会为您保持文件打开状态,并在您离开with
块后关闭文件。编辑: 如果您知道在编译代码之前使用的所有可能的文件名,那么使用
with
是一个更好的选择,如果您不知道,那么您应该使用您的方法,但是您可以使用flush
将数据发送到文件,而不是关闭文件相关问题 更多 >
编程相关推荐