我正在尝试处理在文件夹中创建的一些文件,但有时,打开文件时,python 会返回 [Errno 13]:权限被拒绝。
我只是在做
file = open(file_path, 'rb')
Run Code Online (Sandbox Code Playgroud)
最奇怪的是,大多数时候文件都能正确打开,并且错误与某些特定文件无关(测试了几次)。我已经尝试更改 file_path 格式但没有效果。
我使用 python 3.5 和 watchdog lib 来监视文件创建事件的目录,然后获取事件的 src_path 并打开它。另外,在 Windows 10 上运行。
所以,看起来问题出在代码上。正如我所提到的,我使用看门狗库来检测文件创建,在这种情况下,我打开了创建的文件。问题是,文件创建事件不会在文件完成移动/粘贴/创建时发生,而是在前几个字节到达目录时发生。所以问题是我试图在“创建”过程完成之前打开该文件,因此它仍在写入中。
我搜索了一种获取完成写入事件的方法,但是watchdog lib没有此功能,并且看起来完成写入事件是Linux独有的功能。
所以现在我在通过计时器线程打开文件之前等待一段时间,它似乎工作得很好,因为我不需要对新文件立即执行操作,也不需要处理大文件。