强制可移动媒体文件/扇区读取以在Python中返回新的数据(不是从以前的读取中缓存的)?

2024-04-26 10:58:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经建立了一个USB数据记录棒,当插入文件下载时,它显示为一个USB大容量存储设备。这些文件是离线记录的,但当读取设备上的小型(512字节,1个磁盘扇区)特殊文件时,磁棒可以返回有限的“实时”数据(设备时钟、电池电量、瞬时传感器值)-基本上类似于UNIX设备文件。在

读取和使用/显示记录器数据的应用程序是用Python编写的。在

我以为我是个聪明的家伙,直到我真正从这个文件中读取实时数据。事实证明,在Windows下(目前为止,在XP和Win7中进行了测试),只有第一次从应用程序中读取的数据才真正从设备中读取——尝试重新读取文件(扇区)会从初始读取时返回过时的缓存数据,甚至在初次读取后10分钟以上,即使文件被关闭并重新打开,或者如果扇区被写入,然后重读。通过mmap()访问文件数据也不会导致新的读取。随后的读取请求根本无法发送到设备。我猜Windows“知道”它没有修改文件本身,所以文件内容不可能改变。在

有没有什么合理的方法可以强制后续读取(最好是通过一个“标准”Python文件I/O调用)来真正从设备返回一个新的读取,而不是缓存的数据?在

明确地说,我指的是阻止读缓存,而不是在写入后同步磁盘内容。在

是否存在可以从Python中访问的类似内容?在


Tags: 文件数据应用程序内容字节windows记录时钟