阅读不断增长的共享文件:内容显然没有更新,只有元

时间:2016-05-23 17:58:41

标签: file size shared

所以我碰巧在这个项目上工作,带有测量卡的Linux服务器可以运行一个过程,测量数据不断添加到文件中。该目录通过网络中的SMB2(samba)共享。 Windows 7 PC必须至少每0.5秒读取一次增长的文件,并从数据中获取最新的样本。

我需要filesize来获取一些样本,因为数据被格式化为某种具有恒定长度的块,从头开始计算。

这是一个MATLAB项目,但是在Python上也会出现以下问题(在Windows机器上!):

所以我打开文件,寻找文件结尾告诉获取文件大小,根据文件大小读取数据,然后关闭访问权限。每0.5秒重复一次。但是,当数据写入文件时,此文件大小始终是第一次访问时的值,因此我总是得到相同的样本数据。

现在,我可以使用 dir (MATLAB)或 os.stats (Python)获取正确和最新的文件大小,但是当我寻求接近那个位置和读取,我只返回空数据。

请注意,我已经发现如何使用特殊的注册表项禁用Windows中的SMB缓存,这有助于获取当前真正的文件大小,但使用tell的大小仍未更新。

所以我猜文件内容本身存储在服务器上,直到它停止写入文件,但文件大小的元信息似乎被转移。当我在服务器中运行Python脚本时,我可以顺利获取当前样本。

我知道这是糟糕的数据交换,并且已经计划改变它(长期)。但对于短期而言,我该如何解决这个问题?

0 个答案:

没有答案