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




