使用 os.walk() 时可以使用包含“../”的路径吗?

问题描述 投票:0回答:1

我正在学习有关在 pygame 中制作视频游戏并使用 os.walk() 函数导入一些精灵的教程。他在视频中的做法是使用这行代码:

path = '../graphics/character/'
surface_list = []

for _,_,image_file in os.walk(path):
    for image in image_file:
        full_path = path + '/' + image
        image_surface = pygame.image.load(full_path).convert_alpha()
        surface_list.append(image_surface)

在变量“path”中,他使用“../”,它非常适合他,但当我尝试时,我的 Surface_lists 总是返回空。

我将链接我正在谈论的视频只是为了添加上下文,因为我上面使用的代码并不完全是他使用的:这里是正确时间戳的视频。

我已将他选择的路径('../graphics/player')替换为我的 c: 驱动器的完整路径,然后它对我有用,但当我使用“../”跳转文件夹时则不起作用。有什么我错过的吗,还是我一直坚持使用从 c: 开始的路径?

python directory pygame os.walk
1个回答
0
投票

问题

问题似乎可能与脚本的工作目录有关。当您在路径中使用“../”时,它会尝试从当前工作目录向上一级目录。如果您的脚本与图形文件夹不在同一目录中,则使用“../”可能无法按预期工作。

为确保路径正确,可以使用os.path.abspath()函数获取图形文件夹的绝对路径。这样,您就不必硬编码 C: 驱动器中的完整路径。

解决方案

以下是如何修改代码以获取图形文件夹的绝对路径的示例:

import os

path = os.path.abspath('../graphics/character/')
surface_list = []

for _, _, image_file in os.walk(path):
    for image in image_file:
        full_path = os.path.join(path, image)
        image_surface = pygame.image.load(full_path).convert_alpha()
        surface_list.append(image_surface)

通过使用

os.path.abspath()
,您可以确保无论脚本的工作目录如何,路径始终正确。尝试一下,看看是否有助于解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.