当前位置: 首页 > 面试题库 >

用os.path.join()构造绝对路径

杜君浩
2023-03-14
问题内容

我想在python中构造一个绝对路径,而与此同时却对诸如路径分隔符之类的东西一无所知。

edit0:
例如,在我的文件系统的根目录上/etc/init.d(或C:\etc\init.d在w32上)有一个目录,而我只想根据这些元素来构造该目录,etc并且init.d(在w32上,我可能还需要一个磁盘ID,例如C:

为了不必担心路径分隔符,os.join.path()显然是首选工具。但这似乎只会创建 相对 路径:

 print "MYPATH:", os.path.join('etc', 'init.d')
 MYPATH: etc/init.d

添加虚拟的第一元素(例如'')没有任何帮助:

 print "MYPATH:", os.path.join('', 'etc', 'init.d')
 MYPATH: etc/init.d

将第一个元素设为绝对显然会有所帮助,但是这种做法失败了使用 os.path.join()

 print "MYPATH:", os.path.join('/etc', 'init.d')
 MYPATH: /etc/init.d

edit1:
usingos.path.abspath()只会尝试将相对路径转换为绝对路径。例如,考虑在工作目录中运行以下命令/home/foo

 print "MYPATH:", os.path.abspath(os.path.join('etc', 'init.d'))
 MYPATH: /home/foo/etc/init.d

那么,“扎根”路径的标准跨平台方法是什么?

 root = ??? # <--
 print "MYPATH:", os.path.join(root, 'etc', 'init.d')
 MYPATH: /etc/init.d

edit2:
问题的实质归结为:由于前导斜线/etc/init.d使该路径成为绝对路径,是否有办法以编程方式构造该前导斜线?(我不想假设斜杠表示绝对路径)


问题答案:

所以我想出的解决方案是通过将给定文件跟随到根目录来构建文件系统的根目录:

def getRoot(file=None):
  if file is None:
      file='.'
  me=os.path.abspath(file)
  drive,path=os.path.splitdrive(me)
  while 1:
    path,folder=os.path.split(path)
    if not folder:
       break
  return drive+path

 os.path.join(getRoot(), 'etc', 'init.d')


 类似资料:
  • 问题内容: 给定两个绝对路径,例如 如何创建以第二条路径为基础的相对路径?在上面的示例中,结果应为: 问题答案: 有点回旋处,但是为什么不使用URI?它具有相对方法,可以为你进行所有必要的检查。 请注意,文件路径自Java 1.7起就存在,如@Jirka Meluzin在其他答案中指出的那样。

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置

  • 位置路径指定XML文档中节点的位置。路径可以是绝对路径或相对路径。 如果位置路径以根节点或开头,则它是绝对路径。 以下是使用绝对路径定位元素的示例中的一小部分。 - 选择类根节点中的节点。 - 在类根节点中选择节点的名称。 示例 在这个例子中,我们创建了一个示例XML文档students.xml,及其样式表文档students.xsl,它使用了XPath表达式。 以下是使用的示例XML,文件:st

  • 问题内容: 如果我做一个 然后我收到服务器控制台警告 表达已弃用:改为使用 但它在客户端工作正常。 但是当我将其更改为 我得到一个错误 TypeError:路径必须是绝对路径或将根目录指定为 并且不呈现。 我无法弄清楚绝对路径是什么。我的目录与处于同一级别。我正在使用。我也宣布 添加我的目录结构: 在此处指定的绝对路径是什么? 我正在使用Express4.x。 问题答案: 该中间件是独立的,所以用

  • 本文向大家介绍Linux 相对路径和绝对路径的使用,包括了Linux 相对路径和绝对路径的使用的使用技巧和注意事项,需要的朋友参考一下 01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以

  • 主要内容:什么是当前工作目录,什么是绝对路径与相对路径,Python处理绝对路径和相对路径在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。 什么是当前工作目录 每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。 注意,虽然文件夹是目录的更新的名称,但当前工作目录(或当前目录)是标准术语,没有当前工作文件夹这种说法。 在 Python 中,利用 os.getcwd() 函数可以取得当前工作路径的字