python open文件被另一个进程打开怎么办,在Windows上,如何打开一个已经被另一个进程打开进行写入的文件?...

我试图打开另一个进程打开的日志文件并删除前几行。

在Unix上,我只需做一个os.open('/tmp/file.log', os.O_NONBLOCK),这样就可以更接近我的目标。在

现在我被Windows困住了,我需要以某种方式旋转这个日志,而不结束保存文件的应用程序。这有可能吗?在

起初,我考虑在应用程序希望日志所在的位置打开一个文件句柄,并在Python中充当文件句柄的管道,但在Windows上我也找不到任何方法。在

我还考虑过定期移动文件并让应用程序重新创建该文件,但由于该文件被另一个进程使用,所以效果不太好。在

也想到了O_SHLOCK,但话说回来,那是Unix,而不是Windows。

所以我选择了mmap文件,希望它能让它更灵活一些,但这让我一无所获。在import mmap

import contextlib

import time

with open(r'test.log', 'r+') as f:

with contextlib.closing(mmap.mmap(f.fileno(), 0)) as m:

while 1:

line = m.readline()

if len(line) > 0:

print line

time.sleep(0.5)

这会导致应用程序无法访问该文件,因为Python正在保存该文件(反之亦然)。在

想到了signal.SIGHUP,但这在Windows中也不存在,所以回到原点。在

我被困住了,我已经试过了,Python能帮我吗?还是需要切换我的语言?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值