如何在Python中使用Pygame加载非工作目录下的图片?
问题根因
你错误使用os.path.basename()处理了图片的完整路径,该函数只会提取路径末尾的文件名w_king.png,程序运行时默认只会在当前工作目录查找该文件,自然找不到存放在pieces子目录下的图片。
解决方案
方案1:直接使用完整路径加载
删除os.path.basename()的包裹即可正常加载:
king=pygame.image.load(r"C:\Users\tiago\PycharmProjects\chess\pieces\w_king.png") pos = [4, 0] coords = translate_coord(pos) display.blit(king, coords) pygame.display.flip()
方案2:使用相对路径(更推荐)
硬编码绝对路径在更换设备运行时容易失效,推荐通过当前脚本路径动态拼接资源路径,兼容性更强:
import os # 假设当前运行的脚本存放在 chess 项目根目录下 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 拼接棋子图片路径 king_path = os.path.join(BASE_DIR, "pieces", "w_king.png") king = pygame.image.load(king_path) pos = [4, 0] coords = translate_coord(pos) display.blit(king, coords) pygame.display.flip()
额外检查项
- 确认
w_king.png文件确实存放在chess/pieces目录下,没有被移动、删除或重命名 - 确认文件名、目录名拼写完全正确,Linux、Mac系统对路径大小写敏感,Windows系统也建议保持大小写一致避免异常
内容的提问来源于stack exchange,提问作者Tiago Silva
相关产品推荐
相关产品推荐

