正在访问 os 中的文件路径

Accessing file path in the os

以下行,除非我弄错了,否则将获取您目录的绝对路径,以便您可以访问文件

PATH = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0])))

当我需要在我编写的程序中使用图像等时,这就是我通常使用的访问当前目录中的文件的方法。

现在,假设我执行以下操作,因为我正在使用 windows 访问目录中的特定图像

image = PATH + "\" + "some_image.gif"

这就是我的问题所在,这适用于 windows,但如果我没记错的话 "\" 适用于 windows 而这不适用于其他 OS ?我不能自己直接测试这个,因为我没有其他操作系统,否则我不会费心发帖。据我所知,文档中没有提到这一点。 如果确实如此,是否有解决办法?

是的,'\' 仅适用于 Windows。您可以使用 os.sep,在 Windows 上使用 '\',在经典 Mac 上使用 ':',在几乎所有其他东西上使用 '/',或者任何适合当前平台。

你可以通常使用'/'。除了 Windows 或 Unix 之外,没有人可能成为 运行 您的程序。 Windows 将在 大多数 情况下接受 '/' 路径名。但是有许多 Windows 命令行工具会混淆你的标志路径,如果它以 / 开头,有些即使你在中间有一个 /,如果你在使用 \.\ 路径时,/ 被视为常规字符而不是分隔符,依此类推。所以你最好不要那样做。

最简单的方法就是使用 os.path.join:

image = os.path.join(PATH, "some_image.gif")

作为旁注,在您的第一行中,您已经在使用 join——但您不需要它:

PATH = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0])))

像这样只用一个参数调用join是完全合法的,但也完全没用;你只是加入一件事,一无所有;你会得到你传入的确切内容。只需这样做:

PATH = os.path.abspath(os.path.dirname(sys.argv[0]))

最后一件事:如果您使用的是 Python 3.4+,您可能需要考虑使用 pathlib 而不是 os.path:

PATH = Path(sys.argv[0]).parent.resolve()
image = PATH / "some_image.gif"

使用os.path.join代替"\":

os.path.join(PATH, "some_image.gif")

该函数将智能地连接路径的不同部分。

PATH = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0])))
image = os.path.join(PATH, "some_image.gif")

os.path.join will intelligently join the arguments using os.sep 为您使用 OS 文件分隔符。