python文件编写程序运行时如何在桌面上更新文件大小

时间:2018-07-14 13:12:34

标签: python python-3.x file file-writing

我有一个执行套接字连接,获取一些数据并将其写入文件的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万次迭代的循环是不切实际的。

3 个答案:

答案 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)

每次添加新数据时都需要关闭文件。