除非我弄错了,否则以下行将获取目录的绝对路径,以便您可以访问文件
PATH = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0])))
当我需要在我编写的程序中使用图像等时,这就是我一直在使用当前目录中的文件。
现在,我说我执行以下操作,因为我使用Windows来访问目录中的特定图像
image = PATH + "\\" + "some_image.gif"
这就是我的问题所在,这适用于Windows,但如果我没记错"\\"
适用于Windows,这对其他操作系统无效?我不能直接测试这个,因为我没有其他操作系统或我不会打扰发布。据我所知,据我所知,文档中没有提到。
如果确实是这种情况,可以解决这个问题吗?
答案 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)
答案 2 :(得分:0)
<a>
os.path.join将使用为您使用操作系统文件分隔符的os.sep智能地加入参数。