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

时间:2015-05-06 16:50:11

标签: python file file-io operating-system

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

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

当我需要在我编写的程序中使用图像等时,这就是我一直在使用当前目录中的文件。

现在,我说我执行以下操作,因为我使用Windows来访问目录中的特定图像

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

这就是我的问题所在,这适用于Windows,但如果我没记错"\\"适用于Windows,这对其他操作系统无效?我不能直接测试这个,因为我没有其他操作系统或我不会打扰发布。据我所知,据我所知,文档中没有提到。 如果确实是这种情况,可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

是的,'\\'仅适用于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"

答案 1 :(得分:0)

使用os.path.join代替ADODB

"\\"

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

答案 2 :(得分:0)

<a>

os.path.join将使用为您使用操作系统文件分隔符的os.sep智能地加入参数。