PIL库打开图片时出现 [Errno 13] Permission denied 的原因:
- 可能是文件已经被打开,将对应文件关闭即可
- 可能是文件还没保存完毕,如下我遇到的这种情况:
from PIL import Image
# 监视文件夹 ↓
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyEventHandler(FileSystemEventHandler):
def on_created(self, event):
print("文件创建触发")
time.sleep(0.5) # 让文件保存完毕
image_path = event.src_path
img = Image.open(image_path)
if __name__ == '__main__':
# 开始监视
observer = Observer() # 创建观察者对象
file_handler = MyEventHandler() # 创建事件处理对象
observer.schedule(file_handler, path, False) # path填上自己的
observer.start() # 启动
print('Observing...')
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
实现的是监视文件夹内发生变化时,对图片进行操作。若不加time.sleep(0.5)
则,文件刚复制到文件夹时,有可能还没保存完毕,导致PIL无法打开该文件,就报错了。若不保险,还可以加大等待时间。