如何在Python中获取文件的具体目录?

How can i achieve the specific directory of a file in Python?

所以我是 Python 的新手,正如预测的那样,我 运行 在尝试找出文件的目录时遇到了问题。在我的 IDE 中,当我 运行 代码时:

Import OS
print(os.path.abspath("background.png"))

它工作正常。 (请记住,图片与 Python 代码位于同一目录中。我还知道您可以使用以下内容:

print(os.path.abspath(r"OldBGs\background.png"))

这个returns:

C:\Users\me\Desktop...几个文件夹...\OldBGs\background.png

这就是我目前正在使用的。但是,当我尝试在没有 IDE 的情况下 运行 我的代码时(我通过右键单击 code.py 然后选择使用 Python 3.8 打开),出于某种原因它输出:

C:\WINDOWS\system32\OldBGs\backgroundold.png

这很痛苦,尽管它适用于我的 IDE,但我需要确保无论谁 运行 编写我的代码(with/without 和 IDE).

实现此目的的一种方法是使所有路径都相对于脚本文件本身的位置

您可以通过以下方式获取脚本目录的路径:

import os
SCRIPT_DIRECTORY = os.path.dirname(os.path.abspath(__file__))

然后,您可以定义相对于SCRIPT_DIRECTORY 的所有路径。例如:

BACKGROUND_PICTURE_PATH = os.path.join(SCRIPT_DIRECTORY , "background.png")

此路径现在不再取决于脚本 运行 的来源,而是脚本文件本身所在的位置。这意味着无论您是否在 IDE.

中,它都将是相同的路径

在python中,您可以使用命令os.chdir(your_path)更改您的目录。

然后你可以添加到你的脚本中:

import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))

如果你想打开你现在可以使用的文件:

file = open("background.png")

然后你从 file.py 开始。如果您的文件“background.png”在同一目录中,您可以使用以下方式访问该路径:

os.path.join(os.path.dirname(os.path.abspath(__file__)), "background.png")

然后,如果您想返回目录,请使用:

os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "background.png")

在某些 IDE 中,您可以在执行中添加一些 bash 行。只需添加命令 cd SCRIPT_PATH(SCRIPT_PATH 的变量是 IDE 相关的)