Python中的相对路径

发布于 2021-02-02 23:15:48

我正在构建一个简单的工作助手脚本,该脚本会将代码库中的几个模板文件复制到当前目录。但是,我没有存储模板的目录的绝对路径。我确实有一个来自脚本的相对路径,但是当我调用该脚本时,会将其视为相对于当前工作目录的路径。有没有一种方法可以指定此相对URL来自脚本的位置?

关注者
0
被浏览
93
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在具有脚本的文件中,你想要执行以下操作:

    import os
    dirname = os.path.dirname(__file__)
    filename = os.path.join(dirname, 'relative/path/to/file/you/want')
    

    这将为你提供要查找的文件的绝对路径。请注意,如果你使用的是setuptools,则应该改用其包资源API。

    更新:我在这里回应评论,所以我可以粘贴代码示例。:-)

    我是否认为__file__并非总是可用(例如,当你直接运行文件而不是导入文件时)?

    __main__当你提到直接运行文件时,我假设你的意思是脚本。如果是这样,在我的系统上似乎不是这种情况(在OS X 10.5.7上为python 2.5.1):

    #foo.py
    import os
    print os.getcwd()
    print __file__
    
    #in the interactive interpreter
    >>> import foo
    /Users/jason
    foo.py
    
    #and finally, at the shell:
    ~ % python foo.py
    /Users/jason
    foo.py
    

    但是,我确实知道__file__在C扩展上有一些古怪之处。例如,我可以在Mac上执行此操作:

    >>> import collections #note that collections is a C extension in Python 2.5
    >>> collections.__file__
    '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-
    dynload/collections.so'
    

    但是,这在Windows计算机上引发了异常。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看