Python 2.6中:“无法打开图片”错误(Python 2.6: “Couldn't o

2019-07-19 08:34发布

我试图让基地的地图,我将使用一个游戏,但我不能把影像加载到屏幕上。 我试着在一个绝对的文件路径与likesame字母大小写的图像发送中,我试图改变形象的名字,我已经试过装在我做其他工作的方案不同的图像,我尝试了把图像在同一目录中的脚本本身。 没有什么还没有工作。 我看着谁是有同样的问题的人几个线程,比如为什么我的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作为我的编辑器。

Answer 1:

这里的问题是,你正在使用\作为路径分隔符,而\也被用来作为Python中的字符串转义字符。 特别是, \b的意思是“退格”(或'\x08' 你得逞,像未知的转义序列不会因为-相当详细记录,但可靠的行为的其他反斜杠\X被视为一个反斜线后跟一个X

有三种解决方案:

  1. 使用原始的字符串,这意味着Python的字符串转义被忽略: r"C:\Users\dylan\Desktop\Practice Game\brick.jpg"
  2. 您可以逃离反斜线: "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


Answer 2:

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是退格键的转义序列。 这将删除该序列之前的字符。 这就是为什么你需要逃跑的最后一个反斜杠。



Answer 3:

请注意,Windows路径使用\字符作为分隔符。 那些在Python字符串也意味着“逃离”。

尝试使用原始字符串来代替:

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

(注意r"在前面的字符串。)



文章来源: Python 2.6: “Couldn't open image” error