删除文件时在python中检测损坏的流
作者:互联网
我的问题是当日志被旋转时,日志记录停止为python程序.
我已将其跟踪到流本身.我没有看到任何方法来判断流是否从python中断.删除文件后,它仍然接受写入而没有任何问题.
import os
FILE = 'testing.txt'
fs = open(FILE, 'a')
fs.write('word')
os.remove(FILE)
fs.write('Nothing....') # Nothing breaks
print(fs.errors) # No errors
那么,我怎样才能知道文件流是否仍然有效?
并且检查文件是否存在将无济于事,因为无论流是否仍然有效,文件将始终存在.
解决方法:
经过更多的检查,我找到了解决方案.这是操作系统特定的问题.在Linux(或Macintosh)中删除文件时,它只是取消链接. (我不知道这个)
因此,如果您在计算机上运行lsof,它仍会将文件显示为打开.
[user@machine]$lsof | grep --color -i "testing.txt"
python26 26495 user 8w REG 8,33 23474 671920 /home/user/temp/testing.txt (deleted)
解决方案是在python中统计流.
stat = os.fstat(fs.fileno())
这将为您提供它拥有的链接数量.
if stat.st_nlink < 1:
#has been deleted
你去吧现在您知道是否应该重新加载它.希望这有助于其他人.
标签:python,stream,linux,delete-file,logrotate 来源: https://codeday.me/bug/20190704/1381122.html