gpt4 book ai didi

python - 删除文件时检测python中的中断流

转载 作者:IT王子 更新时间:2023-10-29 00:37:05 26 4
gpt4 key购买 nike

我的问题是,当日志轮换时,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 - 删除文件时检测python中的中断流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5955169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com