我有一个执行套接字连接,获取一些数据并将其写入文件的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万次迭代的循环是不切实际的。
答案 0 :(得分:1)
您应该关闭每个打开的文件,但是可以使用上下文管理器来避免调用close。另外,您正在使用'w'
模式,该模式每次打开时都会覆盖文件的内容,因此必须更改为'a'
(附加模式),才能看到文件增加大小。
x = 0
while x < 1000000:
with open ("test.txt", "a") as myfile:
myfile = open ("test.txt","a") #opens file to append
myfile.write("line:"+str(x)) # appends to file
print("line", x) # no need to call str
x += 1
答案 1 :(得分:0)
这将花费更多时间,但可以实现您的目标。重要的是每次都关闭文件。
x = 0
while x < 1000000:
myfile = open ("test.txt","a") #opens file to append
myfile.write("line:"+str(x)) # appends to file
myfile.close() # closes file(this will update the file size each time)
print("line",str(x))
x+=1
答案 2 :(得分:-1)
每次添加新数据时都需要关闭文件。