【问题标题】:How to generate path of a directory in python如何在python中生成目录的路径
【发布时间】:2014-05-21 12:28:32
【问题描述】:

我在工作区目录下有一个文件abc.py

我在abc.py 中使用os.listdir('/home/workspace/tests') 列出所有文件(test1.pytest2.py...)

我想生成路径'/home/workspace/tests' 甚至'/home/workspace',而不是对其进行硬编码。

我尝试了os.getcwd()os.path.dirname(os.path.abspath(____file____)),但这会生成运行测试脚本的路径。

怎么办?

【问题讨论】:

  • 从什么信息生成呢? /home/workspace/tests 与工作目录、脚本/模块的位置或您拥有的其他一些数据有什么关系?
  • 脚本可用的唯一路径是当前工作目录和放置文件的位置。否则,Python 脚本如何“了解”/home/workspace?该路径基于什么?
  • 如果你想列出一个目录中的所有文件然后访问这个重复的stackoverflow.com/questions/3207219/…
  • (另外,将你的脚本命名为abc.py 是一个有点糟糕的主意;abc 是一个标准库模块,尽管你不太可能经常使用它。)
  • 如果/home/workspace 是用户的主目录,并且您想以此为基础,请查看os.path.expanduser

标签: python path operating-system listdir


【解决方案1】:

您可以引用与您没有任何关系并且您不想对其进行硬编码的特定文件夹的唯一方法是将其作为参数传递给脚本 (search for: command line argument)

【讨论】:

    【解决方案2】:

    我想你是在问如何获取相对路径而不是绝对路径。

    绝对路径类似于:“/home/workspace”

    相对看起来像下面的“./../workspace”

    您应该构建从脚本所在的目录 (/home/workspace/tests) 到您要访问的目录 (/home/workspace) 的相对路径,这意味着,在这种情况下,更上一层楼在目录树中。

    你可以通过执行: os.path.dirname(os.path.join("..", os.path.abspath(__file__)))

    如果向上两步和向下一步进入工作区目录,可能会得到相同的结果: os.path.dirname(os.path.join("..", "..", "workspace", os.path.abspath(__file__)))

    通过这种方式,您实际上可以访问任何目录,而无需知道它的绝对路径,而只知道它相对于您执行的文件的位置。

    【讨论】:

      猜你喜欢
      • 2012-10-22
      • 2020-03-05
      • 2018-04-18
      • 1970-01-01
      • 2019-12-23
      • 2022-07-28
      • 2011-03-01
      • 1970-01-01
      相关资源
      最近更新 更多