Python 在错误的目录中搜索图像
Python searching for image in wrong directory
我正在尝试将一些资产加载到我的程序中,我将它们放在名为 'Graphics' 的文件夹中,该文件夹位于文件夹 'Snake' 中,该文件夹位于文件夹 'Projects' 中,位于文件夹 'Python' 内。但是,在该文件夹 'Python' 中还有另一个名为 'HelloWorld'.
的文件夹
我正在尝试在 'Snake' 中 运行 的程序中加载一些资产,而 Python 正在 'HelloWorld' 文件夹中搜索资产(是我用来保存 python 文件的地方。
我收到错误:
FileNotFoundError: No file 'Projects/Snake/Graphics/apple.png' found in working directory 'C:\Users192\OneDrive - WC\Desktop\Python\HelloWorld'
我认为为此我必须更改 vs code 的默认目录。我已经更改了命令提示符的默认目录,但它什么也没做。也许这是因为我在命令提示符中的python 运行 与vs代码中的不同(?)
我该如何解决这个问题?
提前致谢。
编辑:
这就是我当前加载图像的方式:
apple = pygame.image.load('Projects\Snake\Graphics\apple.png').convert_alpha()
您不需要更改默认目录。只需从完整目录加载。这应该类似于:"C:\Users\...\Python\Snake\Graphics\apple.png".
使用pathlib
构建图像的路径。您必须在代码中添加 import pathlib
。
pathlib.Path(__file__)
将为您提供当前文件的路径。 pathlib.Path(__file__).parent
会给你文件夹。现在您可以使用 /
运算符构造路径。
尝试以下代码并检查输出。
import pathlib
print(pathlib.Path(__file__))
print(pathlib.Path(__file__).parent)
print(pathlib.Path(__file__).parent / 'Grahics' / 'apple.png')
现在您可以将整个项目移动到一个完全不同的文件夹,而无需调整任何代码。
您的代码示例如下所示:apple = pygame.image.load('Projects\Snake\Graphics\apple.png').convert_alpha()
如果您导入 pathlib
,您可以用动态方法替换它:
path_to_image= pathlib.Path(__file__).parent / 'Grahics' / 'apple.png'
apple = pygame.image.load(path_to_image).convert_alpha()
我很确定 pygame 可以使用 pathlib 中的路径。如果不是,那么您必须手动将路径转换为字符串
apple = pygame.image.load(str(path_to_image)).convert_alpha()
我认为最简单的方法是首先通过简单地输入来查看您的活动目录
pwd
,然后你可以简单地通过 cd("C:/path/to/location")
更改目录,记住你必须使用反斜杠,或者只使用以下库:
import os
os.chdir("C:/path/to/location")
正如 pydragon 发布的那样,您也可以通过给导入函数一个路径来导入它。
我正在尝试将一些资产加载到我的程序中,我将它们放在名为 'Graphics' 的文件夹中,该文件夹位于文件夹 'Snake' 中,该文件夹位于文件夹 'Projects' 中,位于文件夹 'Python' 内。但是,在该文件夹 'Python' 中还有另一个名为 'HelloWorld'.
的文件夹我正在尝试在 'Snake' 中 运行 的程序中加载一些资产,而 Python 正在 'HelloWorld' 文件夹中搜索资产(是我用来保存 python 文件的地方。
我收到错误:
FileNotFoundError: No file 'Projects/Snake/Graphics/apple.png' found in working directory 'C:\Users192\OneDrive - WC\Desktop\Python\HelloWorld'
我认为为此我必须更改 vs code 的默认目录。我已经更改了命令提示符的默认目录,但它什么也没做。也许这是因为我在命令提示符中的python 运行 与vs代码中的不同(?)
我该如何解决这个问题?
提前致谢。
编辑:
这就是我当前加载图像的方式:
apple = pygame.image.load('Projects\Snake\Graphics\apple.png').convert_alpha()
您不需要更改默认目录。只需从完整目录加载。这应该类似于:"C:\Users\...\Python\Snake\Graphics\apple.png".
使用pathlib
构建图像的路径。您必须在代码中添加 import pathlib
。
pathlib.Path(__file__)
将为您提供当前文件的路径。 pathlib.Path(__file__).parent
会给你文件夹。现在您可以使用 /
运算符构造路径。
尝试以下代码并检查输出。
import pathlib
print(pathlib.Path(__file__))
print(pathlib.Path(__file__).parent)
print(pathlib.Path(__file__).parent / 'Grahics' / 'apple.png')
现在您可以将整个项目移动到一个完全不同的文件夹,而无需调整任何代码。
您的代码示例如下所示:apple = pygame.image.load('Projects\Snake\Graphics\apple.png').convert_alpha()
如果您导入 pathlib
,您可以用动态方法替换它:
path_to_image= pathlib.Path(__file__).parent / 'Grahics' / 'apple.png'
apple = pygame.image.load(path_to_image).convert_alpha()
我很确定 pygame 可以使用 pathlib 中的路径。如果不是,那么您必须手动将路径转换为字符串
apple = pygame.image.load(str(path_to_image)).convert_alpha()
我认为最简单的方法是首先通过简单地输入来查看您的活动目录
pwd
,然后你可以简单地通过 cd("C:/path/to/location")
更改目录,记住你必须使用反斜杠,或者只使用以下库:
import os
os.chdir("C:/path/to/location")
正如 pydragon 发布的那样,您也可以通过给导入函数一个路径来导入它。