如何Passive读取文本文件[python]

How to Passively Read Text File [Python]

当然,我理解如何用Python读写文本文件。但是,我需要能够读取一个文件而不需要Windows考虑它在另一个进程中"打开"。交易如下:

我在我的Raspberry PI上运行了一个python脚本,它通过网络从我笔记本电脑上的文本文档中提取一个3位数的数字。我希望能够随时更改这个文本文档并保存它,这样Python脚本几乎可以立即更新。这是我现在的基本情况。

1
2
3
4
5
6
7
8
while True:
    text = open("/mnt/win/text.txt","r")
    rgb = text.read()
    text.close()

    ## ... Do stuff with rgb

    time.sleep(.2)

这样做很好,因为我基本上有一个(略大于).2秒的循环,其中文件"text.txt"只打开了相当小的一部分。但是,每当我通过记事本修改"text.txt"时,点击"保存"会给我一个错误,说明文件已经在另一个进程中打开。所以我很想知道,有什么方法可以绕过它吗?我看到过类似的情况,在这种情况下,这个人使用一个PHP脚本来读取文件并将其转储到他们的Python代码中,但我有点希望保留所有的Python。谢谢!

编辑:顺便说一句,如果不明显的话,在Windows上包含文本文件的文件夹被安装到Linux上的/mnt/win。


不知道为什么我完全没有想到它,但我最终只制作了一份我称之为临时文件的副本。这不是最干净的方法,但效果很好。

在循环过程中,我只是把shutil.copyfile("/mnt/win/text.txt","/mnt/win/temp.txt")放在text = open(...)之前,所以原始文本文件似乎基本上没有被程序触及。

这么简单的解决方案,我问起来有点可笑