截取(使用Python)从另一个进程写入文件的数据

截取(使用Python)从另一个进程写入文件的数据,python,python-3.x,windows,intercept,Python,Python 3.x,Windows,Intercept,我正在做的事情,这可能会在未来派上用场 有人知道我可以拦截(使用Python)写入文件的数据(通过其他语言/进程)的方法吗 我会知道我想要截取的文件的路径,我更希望找到一个可以在Windows上工作的解决方案。我知道,watchdog可以监视文件更改,但我的目标是在写入操作触及文件之前拦截它 例如,他们在我的计算机上运行以下脚本,该脚本只是不断写入文件: import time filename = "testfile" i = 1 while True: with open(filen

我正在做的事情,这可能会在未来派上用场

有人知道我可以拦截(使用Python)写入文件的数据(通过其他语言/进程)的方法吗

我会知道我想要截取的文件的路径,我更希望找到一个可以在Windows上工作的解决方案。我知道,
watchdog
可以监视文件更改,但我的目标是在写入操作触及文件之前拦截它

例如,他们在我的计算机上运行以下脚本,该脚本只是不断写入文件:

import time
filename = "testfile"
i = 1
while True:
    with open(filename, 'a') as out:
        out.write(str(i) + '\n')
        time.sleep(1)
        i += 1
注意:这只是一个例子。我想要截取的数据不是用Python编写的。我不知道它是用什么写的

在另一个脚本中,我想截取写入
testfile
的所有内容


我不相信这是可能的,但我想我会问。

使用os.walk,您可以列出整个目录中有多少文件,然后继续检查,并将其与前面的变量交叉引用,该变量表示文件计数,如果有差异,可以使用os.open打开。

使用os.walk,可以列出整个目录中的文件数量,然后继续检查,并将其与说明文件数量的先前变量交叉引用。如果有差异,可以使用os.open打开。

似乎相关。我解决这个问题的理想方法是,当这个程序被激活时,用某种机制秘密地替换被跟踪的文件,使文件描述符指向当前程序,并充当中间人,这可能更可行。不是说你提供的代码实际上不会更新你的文件,除非你
close()
flush()
it。我不需要这样做,但我认为这将是操作系统特有的,需要Windows的管理员权限和/或替换文件系统组件以添加所需的挂钩。检测更改是非常不同的,因为这只是监听诸如Explorer和choose file控件等目录查看器使用的标准Windows事件。@FilipMłynarski我把
放错位置了,谢谢。@DaveS我同意。如果我只是在等待更改,我可以轻松地挂接到windows更改事件,但这更复杂。这就是为什么我不确定这是可能的(尽管中间人是一个选择)。Linux可以使用管道,但Windows很难。本文将深入探讨Windows如何实现其文件写入,以及该流是否可以被拦截(通过管理员访问)似乎是相关的。我解决这个问题的理想方法是,当这个程序被激活时,用某种机制秘密地替换被跟踪的文件,使文件描述符指向当前程序,并充当中间人,这可能更可行。不是说你提供的代码实际上不会更新你的文件,除非你
close()
flush()
it。我不需要这样做,但我认为这将是操作系统特有的,需要Windows的管理员权限和/或替换文件系统组件以添加所需的挂钩。检测更改是非常不同的,因为这只是监听诸如Explorer和choose file控件等目录查看器使用的标准Windows事件。@FilipMłynarski我把
放错位置了,谢谢。@DaveS我同意。如果我只是在等待更改,我可以轻松地挂接到windows更改事件,但这更复杂。这就是为什么我不确定这是可能的(尽管中间人是一个选择)。Linux可以使用管道,但Windows很难。这将深入探讨Windows如何实现其文件写入,如果该流可以被截获(具有管理员访问权限),则无法“截获”尚未创建的文件。这要求该文件不存在,即使我们发现在创建该文件时也无法截获数据。对于这种类型的场景,意味着
watchdog
将是比这更好的解决方案。没有办法“截取”尚未创建的文件。这要求该文件不存在,即使我们发现在创建文件时也没有办法截取数据。这意味着,对于这种类型的场景,看门狗将是比这更好的解决方案。