You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python/Pygame中相对代码文件路径加载图片的实现方法

当然可以用相对路径解决这个问题!

你的思路完全正确——用相对路径就是让项目摆脱绝对路径束缚、实现自由移动的核心方案。先明确下你的项目结构(方便对应路径逻辑):

Downloads/
└── my-game/
    ├── my-code/
    │   └── your_script.py  # 你的Python代码文件
    └── pictures/
        └── my-picture.png  # 要加载的目标图片

方法1:直接用基础相对路径(简单场景)

my-code里的脚本出发,要先回到上一级的my-game目录,再进入pictures文件夹——这里用../表示「当前目录的上一级目录」,所以加载代码可以直接写成:

import pygame

pygame.init()
# 用相对路径加载图片
img = pygame.image.load("../pictures/my-picture.png")

这种写法的前提是你直接从my-code目录下运行脚本(比如命令行cd到my-code目录,再执行python your_script.py),此时脚本的工作目录就是my-code../能准确指向my-game

方法2:用os.path构建跨平台健壮路径(推荐)

如果担心运行时工作目录变化(比如从my-game目录直接执行python my-code/your_script.py),或者要兼容Windows/macOS/Linux的路径分隔符,推荐用Python的os.path模块动态构建路径:

import os
import pygame

pygame.init()
# 获取当前脚本所在的绝对目录(无论在哪运行都能拿到正确路径)
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接图片路径:上一级目录 → pictures文件夹 → 图片文件名
image_path = os.path.join(script_dir, "../pictures/my-picture.png")
# 规范化路径(自动处理../这类相对路径,转换成系统标准格式)
image_path = os.path.normpath(image_path)
# 加载图片
img = pygame.image.load(image_path)

这种方法完全不依赖运行时的工作目录,只要my-game内部的文件夹结构不变,哪怕把整个项目移到任何位置,都能正确加载图片。

小提醒

  • 路径分隔符:Python里既支持/也支持Windows的\,但用os.path.join会自动适配当前系统的分隔符,更稳妥。
  • 文件名细节:要确保图片的文件名和后缀完全正确(比如是.png还是.jpg),Linux/macOS下文件名大小写敏感,注意统一格式。

内容的提问来源于stack exchange,提问作者Henry Boyer

火山引擎 最新活动