【问题标题】:Python relative path problemsPython相对路径问题
【发布时间】:2014-05-09 03:44:44
【问题描述】:

我正在尝试创建一些帮助函数,这些函数将为我提供一个基于相对路径的文件夹:

def get_BASE_dir_path():
    cur_dir = os.path.dirname(os.path.abspath(__file__))
    BASE  = os.path.abspath(os.path.join(cur_dir,"..",".."))
    return BASE

def get_src_dir_path():
    BASE = get_BASE_dir_path()
    src_dir  = os.path.abspath(os.path.join(BASE,"src"))
    return src_dir

def get_lib_dir_path():
    BASE = get_BASE_dir_path()
    lib_dir = os.path.dirname(os.path.join(BASE,"src","lib"))
    return lib_dir

def get_ffmpeg_dir_path():
    BASE = get_BASE_dir_path()
    ffmpeg_dir= os.path.dirname(os.path.join(BASE,"src","lib","ffmpeg"))
    return ffmpeg_dir

但是,不知何故,当我打印函数时,我没有得到正确的结果:

输出:

C:\dev\project
C:\dev\project\src
C:\dev\project\src
C:\dev\project\src\lib

我错过了什么?

【问题讨论】:

  • 那么相对于dev\project预期 路径是什么?包含这些函数的文件在哪里?
  • 您发布的代码没有输出任何内容...同时避免使用'..' 表示父目录,因为它不可移植。请改用os.path.pardir
  • 您的get_lib_dir_pathget_ffmpeg_dir_path 返回目录名称,因此分别为'c:\\dev\\project\\src''c:\\dev\\project\\src\\lib';你在那里使用了错误的函数名。
  • 在最后两个中,而不是获取基本目录,而是获取src 目录并简单地加入附加值。

标签: python path directory


【解决方案1】:

问题出在这里,在函数get_lib_dir_path()中

lib_dir = os.path.dirname(os.path.join(BASE,"src","lib"))

应该是:

lib_dir = os.path.join(BASE,"src","lib")

同样的事情发生在 get_ffmpeg_dir_path() 中。通过调用 dirname(),你砍掉了最后一个目录。

【讨论】:

    【解决方案2】:

    我猜这是因为您为最后两个值返回 dirname 而不是 abspath。

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 2016-01-08
      • 2011-04-29
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多