【问题标题】:Could not open resource file, pygame error: "FileNotFoundError: No such file or directory."无法打开资源文件,pygame 错误:“FileNotFoundError:没有这样的文件或目录。”
【发布时间】:2021-09-02 07:20:03
【问题描述】:
Import pygame

pygame.init()

BG = pygame.image.load('_pycache_/test_bg.jpg')

def DrawGameWin():
    window.blit(BG,(0,0))

pygame.display.update()


DrawGameWin()

【问题讨论】:

  • 错误信息听起来像是在硬盘上找不到文件。请检查您当前的工作目录以及您要打开的文件的路径!
  • 它们都在我桌面上的一个文件夹中。我不确定下一步该做什么。我应该把我想上传的图片移到哪里。
  • Here 你可以看到如何检查你当前的工作目录。请检查您的假设是否正确。或者,您现在也可以提供完整路径,但这会破坏可移植性,因此请将此作为最后一个选项。
  • 也许我不明白。我运行程序显示了路径。我将两者放在桌面上的同一个文件夹中。那不是同一条路吗?这不应该解决问题吗?
  • 运行路径(即当前工作目录)很重要,而不是文件所在的文件夹。

标签: python image pygame loadimage


【解决方案1】:

资源(图像、字体、声音等)文件路径必须相对于当前工作目录。工作目录可能与 python 文件所在的目录不同。
将文件放在同一目录或子目录中是不够的。您还需要设置工作目录。或者,您可以创建一个绝对文件路径。


文件名和路径可以通过__file__获取。当前工作目录可以通过os.getcwd()获取,可以通过os.chdir(path)更改:

import os

os.chdir(os.path.dirname(os.path.abspath(__file__)))

另一种解决方案是找到绝对路径。 如果文件在 python 文件的子文件夹中(甚至在同一个文件夹中),那么您可以获取文件的目录并加入(os.path.join())相对文件路径。例如:

import pygame
import os

# get the directory of this file
sourceFileDir = os.path.dirname(os.path.abspath(__file__))

# [...]

# join the filepath and the filename
filePath = os.path.join(sourceFileDir, 'test_bg.jpg')
# filePath = os.path.join(sourceFileDir, '_pycache_/test_bg.jpg')

surface = pygame.image.load(filePath)

pathlib 模块也可以达到同样的效果。 更改工作目录

import os, pathlib

os.chdir(pathlib.Path(__file__).resolve().parent)

或创建一个绝对文件路径:

import pathlib

# [...]

filePath = pathlib.Path(__file__).resolve().parent / 'test_bg.jpg'
surface = pygame.image.load(filePath)

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多