在操作系统中访问文件路径

2024-05-21 06:14:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

现在,假设我使用windows访问目录中的特定映像

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

这就是我的问题所在,它可以在windows上运行,但是如果我没记错的话"\\"是windows的,它不能在其他操作系统上运行吗?我不能直接测试这个我自己,因为我没有其他操作系统,否则我不会费心张贴。据我所知,这在文档中没有提到。 如果真是这样的话,有办法解决吗?你知道吗


Tags: 文件path方法图像image程序目录os
3条回答

使用^{}代替"\\"

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将使用使用OS文件分隔符的os.sep智能地连接参数。你知道吗

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

你可以通常使用'/'逃脱惩罚。除了Windows或Unix之外,没人可能会在任何东西上运行你的程序。在大多数情况下,Windows将接受'/'路径名。但是有许多Windows命令行工具会把路径与标志混淆,如果它以/开头,有些甚至在中间有一个/,如果您使用的是\\.\路径,/被视为常规字符而不是分隔符,等等。所以你最好不要那样做。你知道吗

简单的方法就是使用^{}

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]))

最后一件事:如果您使用的是python3.4+,您可能需要考虑使用^{}而不是os.path

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

相关问题 更多 >