微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为 Python 导入 PNG 文件时出现“FileNotFoundError”

如何解决为 Python 导入 PNG 文件时出现“FileNotFoundError”

我正在学习 Space Invaders 的基本 pygame 教程,但我很早就陷入了尴尬的境地。每当我尝试从资产文件夹导入我的文件(是的,它与我的代码位于同一目录中)时,我最终都会遇到 filenotfound 错误。这是我的代码...

import pygame
import os
import time
import random



RED_SPACE_SHIP = pygame.image.load(os.path.join("assets",'pixel_ship_red_small.png'))
GREEN_SPACE_SHIP = pygame.image.load(os.path.join('assets',"pixel_ship_green_small.png"))
BLUE_SPACE_SHIP = pygame.image.load(os.path.join('assets',"pixel_ship_blue_small.png"))
YELLOW_SPACE_SHIP = pygame.image.load(os.path.join('assets',"pixel_ship_yellow.png")) #player ship

RED_LASER = pygame.image.load(os.path.join("assets","pixel_laser_red.png"))
GREEN_LASER = pygame.image.load(os.path.join("assets","pixel_laser_green.png"))
BLUE_LASER = pygame.image.load(os.path.join("assets","pixel_laser_blue.png"))
YELLOW_LASER = pygame.image.load(os.path.join("assets","pixel_laser_yellow.png"))

BG = RED_SPACE_SHIP = pygame.image.load(os.path.join("assets","background-black.png"))

我也试过 CURRENT_PATH = os.path.dirname("assets") ......

CURRENT_PATH = os.path.dirname("assets")
RED_SPACE_SHIP = pygame.image.load(os.path.join(CURRENT_PATH,'pixel_ship_red_small.png'))

它真正给我的只是稍长的加载时间和相同的结果。

解决方法

能否请您检查文件大小是否不为零字节。这是我试图演示的代码。我使用了 2 张图片:smiley.png (142461 bytes) 和一张空图片 - pixel_ship_red_small.png (0 bytes)

import pygame
import os

print('size of the file: ',os.stat(os.path.join("assets",'smiley.png')).st_size,'bytes')
smiley = pygame.image.load(os.path.join("assets",'smiley.png'))
print('dimensions: ',smiley.get_size())

# print('size of the file: ','pixel_ship_red_small.png')).st_size,'bytes')
# RED_SPACE_SHIP = pygame.image.load(os.path.join("assets",'pixel_ship_red_small.png'))
# print('dimensions: ',RED_SPACE_SHIP.get_size())

输出:

pygame 2.0.1 (SDL 2.0.14,Python 3.9.1)
Hello from the pygame community. https://www.pygame.org/contribute.html
size of the file:  142461 bytes
dimensions:  (530,532)

如果你使用空图片,它会抛出以下错误:

import pygame
import os

RED_SPACE_SHIP = pygame.image.load(os.path.join("assets",'pixel_ship_red_small.png'))

输出:

pygame 2.0.1 (SDL 2.0.14,Python 3.9.1)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "D:\Python\temp.py",line 11,in <module>
RED_SPACE_SHIP = pygame.image.load(os.path.join("assets",'pixel_ship_red_small.png'))
FileNotFoundError: No such file or directory.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。