当前位置: 首页 > 知识库问答 >
问题:

无法打开资源文件,pygame错误:“FileNotFoundError:没有这样的文件或目录。”

林君博
2023-03-14
Import pygame

pygame.init()

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

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

pygame.display.update()


DrawGameWin()

共有1个答案

法烨华
2023-03-14

资源(图像、字体、声音等)文件路径必须相对于当前工作目录。工作目录可能与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)

使用<code>pathlib</code>模块也可以实现这一点。更改工作目录

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)
 类似资料:
  • 错误:警告:require_once(…/tcpdf/config/lang):无法打开流:在第33行的C:\xampp\htdocs\jmb_system\anggerik\printunitstmt.php中没有这样的文件或目录 致命错误:require_once():失败打开需要'…/tcpdf/config/lang'(include_path='.; C:\xampp\php\PEAR'

  • 当我尝试在CMD中执行此操作时 我收到这个错误: 当文件存储在 (get-pip.py) C:\Python27\工具\脚本

  • 免责声明:在堆栈溢出中也有类似的问题,但这些问题是他们各自的答案,既不适合这个问题,也不帮助解决他们的答案。这些问题是不同的,答案只适合那些具体的问题,而不是通用的。经过长时间的挣扎,他们没有任何帮助,我想了两次我要发布这个问题来寻求帮助。如果有人不喜欢这个问题或不理解,请沟通并得到澄清,而不是勉强设置标志来关闭这个问题;最好你可以忽略并传递...谢谢你! 需求:我使用Zend框架的谷歌日历API

  • 我在节点Js中工作。当我尝试加载文件时:moviedata.json,如下行: 显示: 错误:ENOENT:没有这样的文件或目录,打开'./moviedata.json'在错误(本机)在Object.fs.open同步(fs.js:640: 18)在Object.fs.readFileSync(fs.js:508: 33)在对象。(/用户/dortiz/文档/NodeJS/pruebas/zw/a

  • 问题内容: 我正在尝试使用PyInstaller将.py脚本导出到.exe,该文件依赖于使用Qt Designer创建的.ui文件。 我可以确认.py脚本在通过PyCharm运行时可以正常工作-我可以看到使用.ui文件创建的GUI。 但是,当我将.py脚本导出到.exe并启动它时,在命令行中收到以下错误: 由于某种原因,.exe文件正在路径-C:\ Users \ giranm \中寻找.ui文件

  • 我正在尝试让PHP将上传的文件从tmp目录移动到Web服务器上的永久位置。这看起来很简单,但我遇到了这个错误: 很直接,对吧?它找不到目标文件夹。 我的问题是:如何引用所需的目标目录? 引用是相对于脚本在服务器上的位置?还是相对于URL?还是?还是操作系统的文件系统?还是其他东西? 我在PHP文档中找不到答案,甚至在SO上的任何类似问题中也找不到答案.. 有人能帮忙吗?谢谢