我写了一个 python 程序来连续写入一个文件。
#!/usr/bin/python
import sys
import time
file = open("data",'w')
i = 1
while True:
file.write("%d\n" % i)
file.flush()
i+=1
time.sleep(0.01)
一段时间后,data
文件的大小不是 0。然后 python 写入程序仍在运行。我尝试使用 echo ""> data
命令清空现有内容。
但它不起作用。只要python程序不断向文件写入数据,文件大小仍然保持不变。
如何解决这个问题?
最佳答案
您应该以append
模式打开文件并使用truncate()
删除旧内容:
#!/usr/bin/python
import sys
import time
file = open("data",'a')
file.truncate()
i = 1
while True:
file.write("%d\n" % i)
file.flush()
i+=1
time.sleep(0.01)
然后当这段代码运行时你可以做:
> data
从您的 shell 随时将文件截断为 0 字节不会通过文件搜索添加空字节。
以附加模式(a 作为模式的第一个字符)打开文件会导致对该流的所有后续写入操作发生在文件末尾,从而避免将先前位置填充为空字节的情况。
关于python - 在另一个进程正在写入时清空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472926/