Python 2.6: ошибка «Не удалось открыть изображение»

Я пытаюсь создать базу для карты, которую я собираюсь использовать для игры, но я не могу загрузить изображение на экран. Я попытался отправить абсолютный путь к изображению с помощью случая с письмом, я попытался изменить имя изображения, я попробовал загружать разные изображения, которые работали в других программах, которые я сделал, и я попытался поставить изображение в том же каталоге, что и сам сценарий. Пока ничего не получилось. Я посмотрел на несколько потоков людей, у которых была такая же проблема, например, почему мои изображения pygame не загружаются? и я не могу найти ответ на свою проблему. Изображение не загружается. Вот код:

import sys, pygame from pygame.locals import * pygame.init() size = (600, 400) screen = pygame.display.set_mode(size) pygame.display.set_caption("Practice Map") walls = pygame.image.load("C:\Users\dylan\Desktop\Practice Game\brick.jpg") x = 0 y = 0 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: sys.exit() if event.type == KEYDOWN and event.key == K_UP: y -= 20 if event.type == KEYDOWN and event.key == K_DOWN: y += 20 if event.type == KEYDOWN and event.key == K_LEFT: x -= 20 if event.type == KEYDOWN and event.key == K_RIGHT: x += 20 screen.fill((0,0,0)) screen.blit(walls,(x, 330)) # more bricks to go here later pygame.display.flip() #end 

и ошибка:

 Traceback (most recent call last): File "C:\Users\dylan\Desktop\Practice Game\move.py", line 8, in <module> walls = pygame.image.load("C:\Users\dylan\Desktop\Practice Game\brick.jpg") error: Couldn't open C:\Users\dylan\Desktop\Practice Gamerick.jpg 

Я использую Python 2.6 с PyGame 1.9 для Python версии 2.6 с IDLE в качестве моего редактора.

  • Использует ли джанго юг (инструмент миграции) для innodb?
  • Как переместить Sprite в Pygame
  • Вариант построения протокола для использования многоядерных процессоров
  • ImportError: Нет модуля с именем «Очередь»
  • Как читать и писать с помощью msgpack?
  • werkzeug.security generate_password_hash альтернатива без SHA-1
  • Создать случайный список целых чисел в Python
  • Python: select () не сигнализирует все входные данные из канала
  • 3 Solutions collect form web for “Python 2.6: ошибка «Не удалось открыть изображение»”

    Проблема здесь в том, что вы используете \ в качестве разделителя пути, но \ также используется как escape-символ в строках Python. В частности, \b означает «backspace» (или '\x08' ). Вы избегаете других обратных косых черт из-за не совсем документированного, но надежного поведения, которое неизвестные escape-последовательности, такие как \X , рассматриваются как обратная косая черта, за которыми следует X

    Существует три решения:

    1. Используйте необработанную строку, что означает, что escape-строки в Python игнорируются: r"C:\Users\dylan\Desktop\Practice Game\brick.jpg" .
    2. "C:\\Users\\dylan\\Desktop\\Practice Game\\brick.jpg" обратной косой чертой: "C:\\Users\\dylan\\Desktop\\Practice Game\\brick.jpg" .
    3. Вместо этого используйте косые черты: "C:/Users/dylan/Desktop/Practice Game/brick.jpg" .

    Если вы запомнили список управляющих последовательностей Python и готовы полагаться на функциональность, которая может измениться, но, вероятно, этого не произойдет, вы можете уйти с помощью только экранирования \b здесь, но должно быть понятно, почему остальные три лучшие идеи в долгосрочной перспективе.

    В то время как имена путей Windows используют обратные косые разделители, все встроенные и стандартные библиотеки Python и большинство функций в сторонних библиотеках, с удовольствием разрешают использовать вместо них косые черты. (Это работает, потому что Windows не разрешает косые черты в пути вообще).

    Чтобы понять, как и почему это работает, вы можете попробовать распечатать строки:

     >>> print "C:\Users\dylan\Desktop\Practice Game\brick.jpg" C:\Users\dylan\Desktop\Practice Gamrick.jpg >>> print r"C:\Users\dylan\Desktop\Practice Game\brick.jpg" C:\Users\dylan\Desktop\Practice Game\brick.jpg >>> print "C:\\Users\\dylan\\Desktop\\Practice Game\\brick.jpg" C:\Users\dylan\Desktop\Practice Game\brick.jpg >>> print "C:/Users/dylan/Desktop/Practice Game/brick.jpg" C:/Users/dylan/Desktop/Practice Game/brick.jpg 
     walls = pygame.image.load("C:\Users\dylan\Desktop\Practice Game\brick.jpg") 

    Вам нужно избежать последнего \

     walls = pygame.image.load("C:\Users\dylan\Desktop\Practice Game\\brick.jpg") 

    Изменить : Объяснение

    Вам нужно сбежать на последнем \ потому что ab сразу после \ , а \b – escape-последовательность для backspace. Это удаляет символ перед последовательностью. Вот почему вам нужно избежать последней обратной косой черты.

    Обратите внимание, что пути Windows используют разделители символов \ . Они также означают «escape» в строке Python.

    Вместо этого попробуйте использовать необработанную строку:

     walls = pygame.image.load(r"C:\Users\dylan\Desktop\Practice Game\brick.jpg") 

    (Обратите внимание на r" перед строкой.)

    Python - лучший язык программирования в мире.