当前位置: 首页 > 面试题库 >

Python 2.6:“无法打开图像”错误

奚高扬
2023-03-14
问题内容

我正在尝试为将要用于游戏的地图做基础,但无法将图像加载到屏幕上。我尝试使用相同的字母大小写将图像的绝对文件路径发送到图像,尝试更改图像的名称,尝试加载在我制作的其他程序中可以使用的其他图像,并且尝试放置图像与脚本本身位于同一目录中。什么都没有。我查看了遇到相同问题的人的一些话题,例如为什么我的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作为编辑器。


问题答案:

这里的问题是您使用\作为路径名分隔符,但是\在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


 类似资料:
  • 问题内容: 7个月前关闭。 我正在使用该网站学习python 我正在尝试像这样加载图像: 我发现其他几个帖子都问相同的问题,所有答案都告诉发布者确保图像与文件位于同一文件夹中。好吧,是的。我仔细检查了。 我还尝试将其放入一个子文件夹中并使用它。 在两种情况下,我都会收到以下错误消息。 要么 使用绝对路径时,它可以工作。但是我不应该使用这样的相对路径吗? 同样,使用软件包在Atom中执行时也会发生这

  • 我有一个pgm文件,格式如下 请帮帮我。。我不知道是什么问题。

  • 问题内容: 我收到这个奇怪的错误 我如何从中恢复?有任何想法吗 ? 谢谢 问题答案: 您丢失了与表1684和数据库17369相关的文件。在目录base / 17369中检查名称为1684的状态文件。 您可以确定它是哪个表: 1)获取数据库名称: 2)获取表名(连接到受影响的数据库): 可能没有更多可以做的事情了。仅从备份还原。

  • 我想在数据目录中为应用程序创建一个数据库。我试着使用 但我总是遇到以下异常:无法打开数据库文件 Logcat得出以下结果: 04-10 19:55:09.387: E/SqliteDatabase aseCpp(554):sqlite3_open_v2("/data/data/at.einkaufsliste/database/Einkaufsliste.sqlite", 我设置了权限外部存储和组

  • 本文向大家介绍android打开本地图像的方法,包括了android打开本地图像的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了android打开本地图像的方法。分享给大家供大家参考。具体如下: 方法一,调用手机安装的图像浏览工具浏览: 方法二,调用手机自身图像浏览工具浏览: 将上述代码写入onClick事件中即可! 希望本文所述对大家的Android程序设计有所帮助。