我正在尝试处理在文件夹中创建的一些文件,但有时,在打开文件时,python会返回给我[Errno 13]:权限被拒绝。
我只是在做
file = open(file_path, 'rb')
最奇怪的是大多数时候文件正确打开并且错误与某些特定文件无关(多次测试)。 我已经尝试更改file_path格式但没有效果。
我正在使用python 3.5和watchdog lib来查看文件创建事件的目录,然后我获取事件的src_path并打开它。此外,在Windows 10上运行。
答案 0 :(得分:1)
所以,看起来代码中的问题有点过时了。正如我所提到的,我使用watchdog lib来检测文件创建,在那种情况下我打开了创建的文件。问题是,当文件完成移动/粘贴/创建时,文件创建事件不会发生,但是当前几个字节到达目录时。所以问题是我试图在"创建"之前打开文件。过程完成了,所以它仍然在写。
我搜索了一种获得完成写入事件的方法,但是看门狗lib没有这个功能,看起来完成的写入事件只是linux的特性。
所以现在我等待一段时间才通过计时器线程打开文件,它似乎工作得很好,因为我不需要对新文件立即采取行动,也不需要处理大文件。
答案 1 :(得分:0)
我也遇到了同样的错误“权限被拒绝”,但是如果您在创建事件后等待大约2秒钟,然后读取文件,它将得到解决。
答案 2 :(得分:0)
您可以添加下面的截图以等待操作完成。
init_size = -1
while True:
current_size = os.path.getsize(event.src_path)
if current_size == init_size:
break
else:
init_size = os.path.getsize(event.src_path)
time.sleep(2)
print("file copy has now finished")