Не удалось открыть файл ресурсов, ошибка pygame: «FileNotFoundError: нет такого файла или каталога».

avatar
user12144855
1 октября 2019 в 01:47
887
1
2
Import pygame

pygame.init()

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

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

pygame.display.update()


DrawGameWin()
Источник
csabinho
1 октября 2019 в 01:53
1

Сообщение об ошибке звучит так, будто файл не найден на жестком диске. Пожалуйста, проверьте ваш текущий рабочий каталог, а также путь к файлу, который вы хотите открыть!

user12144855
1 октября 2019 в 02:09
0

Они оба у меня на рабочем столе в папке. Я не знаю, что делать дальше. Куда мне переместить изображения, которые я хочу загрузить.

csabinho
1 октября 2019 в 02:13
0

Здесь вы можете увидеть, как проверить текущий рабочий каталог. Пожалуйста, проверьте правильность ваших предположений. В качестве альтернативы вы также можете указать полный путь на данный момент, но это разрушит переносимость, поэтому просто сделайте это как последний вариант.

user12144855
1 октября 2019 в 02:26
0

может я не понимаю. Запустил программу показал путь. Я положил оба в одну папку на рабочем столе. это не тот же путь? Разве это не должно решить проблему?

csabinho
1 октября 2019 в 02:29
0

Путь запуска (другими словами, текущий рабочий каталог) важен, а не папка, в которой находится ваш файл.

Ответы (1)

avatar
Rabbid76
1 октября 2019 в 04:57
5

Путь к файлу ресурса (изображение, шрифт, звук и т. д.) должен относиться к текущему рабочему каталогу. Рабочий каталог, возможно, отличается от каталога файла 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)