Как избежать ошибки разрешения при загрузке изображения - PullRequest
1 голос
/ 11 апреля 2020

У меня есть папка с изображениями:

images
  |- some images.png
  |- grasses
     |- grass images.png

Когда я хочу открыть изображение, например:

for image_file_name in os.listdir("images/grasses"):
  image_file_id = image_file_name.split(".")[0]
  with open("images/grasses/" + image_file_name) as file:
    surface = pygame.image.load(file)
    surfaces[image_file_id] = surface

я получаю это:

 Traceback (most recent call last):
   File "C:/Users/USER/PycharmProjects/Rock Rain/Rock Rain.py", line 43, in <module>
     with open("images/" + image_file_name) as file:
 PermissionError: [Errno 13] Permission denied: 'images/grasses'

Я проверил разрешения для этой папки, но это не было проблемой. В чем проблема?

1 Ответ

1 голос
/ 11 апреля 2020

Проблема в том, что вы не фильтруете данные, которые хотите открыть. os.listdir перечисляет все в каталоге, включая другие подкаталоги. В вашем случае вы перечислили «images», который включает в себя подкаталог «gras», и вы не можете open каталоги. Как минимум, проверьте тип файла и расширение

for image_file_name in os.listdir("images/grasses"):
  image_file_id = image_file_name.split(".")[0]
  fullname = os.path.join("images/grasses", image_file_name)
  if fullname.endswith(".png") and os.path.isfile(fullname):
    with open(fullname, "rb") as file:
      surface = pygame.image.load(file)
      surfaces[image_file_id] = surface
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...