【问题标题】:How to get the path of the parent directory in python如何在python中获取父目录的路径
【发布时间】:2020-03-05 19:09:55
【问题描述】:

我有以下目录结构:

E:\<somepath>\PythonProject
                        -> logs
                        -> configs
                        -> source
                                -> script.py

PythonProject 是我的主目录,在source 目录中我有一些 python 脚本。我想从script.py 访问configs 中的配置文件。在这里,我不想提及像E:\&lt;somepath&gt;\PythonProject\configs\config.json 这样的完整路径,我将把它部署到我不知道路径的系统上。所以我决定去

config_file_path = os.path.join(os.path.dirname(file))

但这给了我到源目录E:\&lt;somepath&gt;\PythonProject\source 的路径,而我只想要E:\&lt;somepath&gt;\PythonProject,以便我以后可以添加configs\config.json 来访问配置文件的路径。

我该怎么做。谢谢

【问题讨论】:

标签: python directory path


【解决方案1】:

您可以使用pathlib 模块:

(如果没有,请在终端中使用pip install pathlib。)

from pathlib import Path
path = Path("/<somepath>/PythonProject/configs/config.json")
print(path.parents[1])

path = Path("/here/your/path/file.txt")
print(path.parent)
print(path.parent.parent)
print(path.parent.parent.parent)
print(path.parent.parent.parent.parent)
print(path.parent.parent.parent.parent.parent)

给出:

/<somepath>/PythonProject
/here/your/path
/here/your
/here
/
/

(来自How do I get the parent directory in Python?https://stackoverflow.com/users/4172/kender

【讨论】:

  • 为什么不使用循环?为什么不使用提供所有这些的parents?为什么要引用另一个问题而不是将此问题标记为重复?
  • 谢谢@ofer-sadan。我做到了。我还需要声望达到 15,所以我的选票很重要。
【解决方案2】:

你可以只用 os 模块来做到这一点:

import os
direct = os.getcwd().replace("source", "config")

【讨论】:

    【解决方案3】:

    一种方式:

    import os 
    
    config_file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'configs\config.json')
    
    print(config_file_path)
    

    或者(你需要 pip install pathlib):

    from pathlib import Path
    
    dir = Path(__file__).parents[1]
    config_file_path = os.path.join(dir, 'configs/config.json')
    
    print(config_file_path)
    

    第三种方式:

    from os.path import dirname as up
    
    dir = up(up(__file__))
    
    config_file_path = os.path.join(dir, 'configs\config.json')
    

    【讨论】:

    • 喜欢“向上”的方式哈哈
    【解决方案4】:

    使用pathlib:

    from pathlib import Path
    
    p = Path(path_here)
    
    # so much information about the file
    print(p.name, p.parent, p.parts[-2])
    print(p.resolve())
    print(p.stem)
    
    

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多