2024-03-28 17:07:34 发布
网友
我正在尝试用python制作一个冒险游戏,我需要知道如何导入图像,它与pygame的代码位于同一文件夹中。怎么做?我试过了
Character = pygame.image.load('Resources/MainCharFront.png')
但我有一个错误:
pygame.error: Couldn't open Resources/MainChar_Front.png
我真的需要它在同一个文件夹,因为我经常切换设备,我的文件系统总是不同的
如果您已经将代码结构化为Python包(您应该这样做),那么可以使用pkg_resources模块访问项目中的资源文件,如图像等
例如,如果我有以下布局:
./mypackage/__init__.py ./mypackage/main.py ./mypackage/images/character.jpg
我可以用mypackage/main.py写:
mypackage/main.py
import pygame import pkg_resources Character = pygame.image.load( pkg_resources.resource_filename('mypackage', 'images/character.jpg'))
您可以在下面的操作中看到这一点:
>>> import mypackage.main pygame 1.9.6 Hello from the pygame community. https://www.pygame.org/contribute.html >>> mypackage.main.Character <Surface(359x359x24 SW)> >>>
在您的注释中,您说图像与代码位于同一目录中,但是您显示的路径暗示您正试图从名为Resources的子目录加载图像:
Resources
因此,您可以通过使用以下方法从路径ans中删除该路径来解决问题:
Character = pygame.image.load('MainCharFront.png')
然而,这不是我建议的方法。您最好将资源保存在一个单独的子目录中,如Resources,以尝试并保持组织。您说过您希望使用平面结构,将所有内容都放在一个文件夹中,因为您可以在具有不同文件系统的不同系统之间移动游戏。我将假设您在这些不同的系统上遇到了路径分隔符问题。不过,这相当容易处理
@larsks已经提出了一种很好的方法。不过,您不必走得太远,仍然能够保持资源中的结构
处理不同文件系统上不同路径分隔符的简单方法是使用os.path.join()将路径组件与文件系统相应的分隔符链接,如下所示:
os.path.join()
Character = pygame.image.load(os.path.join('Resources', 'MainCharFront.png'))
这将允许您在Windows、Linux等之间移动,而无需扁平化您的结构。os.path.join()可以将多个路径组件作为参数,而不仅仅是2个,因此您可以根据需要拥有尽可能多的层次结构。只需将路径字符串拆分为斜杠所在的单独字符串。像这样:
os.path.join('Resources', 'images', 'MainCharFront.png')
您可以找到os.path.join()命令here的文档
非常清楚地说,os.path.join()方法与标准的string join()方法不同(它使用您告诉它的分隔符连接字符串)。os.path.join()方法根据正在运行它的系统为您确定分隔符
如果您已经将代码结构化为Python包(您应该这样做),那么可以使用pkg_resources模块访问项目中的资源文件,如图像等
例如,如果我有以下布局:
我可以用
mypackage/main.py
写:您可以在下面的操作中看到这一点:
在您的注释中,您说图像与代码位于同一目录中,但是您显示的路径暗示您正试图从名为
Resources
的子目录加载图像:因此,您可以通过使用以下方法从路径ans中删除该路径来解决问题:
然而,这不是我建议的方法。您最好将资源保存在一个单独的子目录中,如
Resources
,以尝试并保持组织。您说过您希望使用平面结构,将所有内容都放在一个文件夹中,因为您可以在具有不同文件系统的不同系统之间移动游戏。我将假设您在这些不同的系统上遇到了路径分隔符问题。不过,这相当容易处理@larsks已经提出了一种很好的方法。不过,您不必走得太远,仍然能够保持资源中的结构
处理不同文件系统上不同路径分隔符的简单方法是使用
os.path.join()
将路径组件与文件系统相应的分隔符链接,如下所示:这将允许您在Windows、Linux等之间移动,而无需扁平化您的结构。
os.path.join()
可以将多个路径组件作为参数,而不仅仅是2个,因此您可以根据需要拥有尽可能多的层次结构。只需将路径字符串拆分为斜杠所在的单独字符串。像这样:您可以找到
os.path.join()
命令here的文档非常清楚地说,
os.path.join()
方法与标准的string join()方法不同(它使用您告诉它的分隔符连接字符串)。os.path.join()
方法根据正在运行它的系统为您确定分隔符相关问题 更多 >
编程相关推荐