我如何利用相对路径?

时间:2015-03-11 12:38:43

标签: python relative-path

我很困惑,因为我会这样做。例如,如果我在我的计算机上引用pic0.gif,我当然要为

之类的东西做些什么
def drawx():
    myImWin = ImageWin('\Python34\images\pic0.gif',300,300)
    Im = FileImage('\Python34\images\pic.gif')
    Im.draw(myImWin)

但这只能在我的电脑上运行,因为我知道pic0.gif的目录。我需要做什么才能在具有不同目录的另一台计算机上自动寻找pic0.gif?

3 个答案:

答案 0 :(得分:2)

通常,您的项目中有一个文件夹,其中包含图像资源:

[my_project]
    [images]
        pic0.gif

在您的代码中,您确定项目主目录:

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

然后你得到这样的图像文件:

myImWin = ImageWin(os.path.join(BASE_DIR, r'images/pic0.gif', 300, 300)

答案 1 :(得分:0)

如果您知道您要查找的图像与您的python脚本相关,例如,如果图像与脚本捆绑在一起,则可以检索脚本的绝对路径并从那里开始:

import os

# This is the full path of the directory containing this script
dirname = os.path.abspath(os.path.dirname(__file__)) 
# We know that the images are in a folder named 'img'
image_path = os.path.join(dirname, "img", "pic0.gif")

我们广泛使用模块os.path__file__变量which is explained in this stackoverflow answer

这样做的好处是它不会从你从中启动python脚本的地方工作。

答案 2 :(得分:-3)

你可以尝试使用os模块。即显示当前文件夹的完整路径:

import os
os.path.curdir
>>> '.'
os.path.abspath(os.path.curdir)
>>> 'C:\\Users\\User\\Desktop'