【发布时间】:2018-07-14 13:12:33
【问题描述】:
我有一个执行套接字连接、获取一些数据并将它们写入文件的 python 程序。数据相当大。我需要确保在程序运行时写入进度良好,方法是单击文件属性以查看文件大小随着程序运行时间的延长而增加。
为了简化,问题的主要逻辑出现在这个简单的例子中:
myfile = open ("test.txt","w")
x = 0
while x < 1000000:
myfile.write("line:"+str(x))
print("line",str(x))
x+=1
这个程序写了 100 万行。在写作过程中,我检查了文件大小,它总是 0 KB。只有当程序完成时,我才能看到文件大小。这对我来说很不方便。
1) 这是什么原因?我记得我已经运行了程序,但是在程序运行时我能够看到文件大小的进度? 我不确定它是否是 python 程序,但我通常这样做是为了监控进度。
2)我如何反映文件写入进度,所以当我在python程序运行时单击文件属性时,我可以看到文件大小增加了。
更新: 不幸的是,这些解决方案似乎都不实用。首先,我有目的地用“w”进行新的写作。程序应该在每次运行时写入新的数据。我不想追加。其次,程序应该在循环中一次写入数据。最后,我应该关闭文件(我错过了)。 我需要的是同步或刷新之类的东西。我不认为关闭文件以进行需要 10 万次迭代的循环是不切实际的。
【问题讨论】:
-
因为写入是缓冲的。以
python -u script.py身份运行脚本有帮助吗? -
@user9371654,据我所知,您正在调用
write,它会覆盖文件的内容。 -
@lmiuelvargasf 是的。如果我想追加我在打开带有“a”参数的文件时添加第二个参数。您还有其他建议吗?
-
@user9371654,具体有什么建议?
-
@heemayl
python -u script.py没有任何区别。
标签: python python-3.x file file-writing