os.path.join 是否有 Pathlib 替代品?

rei*_*rdt 28 python python-3.x pathlib

我目前正在使用Pathlib如下方式访问我的文件的父目录:

Path(__file__).parent
Run Code Online (Sandbox Code Playgroud)

当我打印它时,这给了我以下输出:

print('Parent: ', Path(__file__).parent)
#output
/home/user/EC/main-folder
Run Code Online (Sandbox Code Playgroud)

main-folder有一个.env,我想访问文件和我想加入与父路径.env。现在,我做到了:

dotenv_path = os.path.join(Path(__file__).parent, ".env")
Run Code Online (Sandbox Code Playgroud)

哪个有效。但我想知道,是否有Pathlib替代方案os.path.join()?就像是:

dotenv_path = pathlib_alternate_for_join(Path(__file__).parent, ".env")
Run Code Online (Sandbox Code Playgroud)

Pan*_*shi 36

就在这里:

env_path = Path(__file__).parent / ".env"
Run Code Online (Sandbox Code Playgroud)

/是你所需要的全部。这将适用于不同的操作系统

  • 你总是可以这样做, Path(__file__).parent.parent / "env" (3认同)
  • 或者 `Path(__file__).parents[1] / "env"` (2认同)

Jun*_*rat 20

你可以使用这样的东西:

(Path(__file__).parent).joinpath('.env')
Run Code Online (Sandbox Code Playgroud)

文档:

pathlib.Path.joinpath


Que*_*atl 11

以下定义filepath在精神上是否更接近 os.path.join?

import pathlib
main_dir = 'my_main_dir'
sub_dir = 'sub_dir'
fname = 'filename.tsv'
filepath = pathlib.PurePath(main_dir, sub_dir, fname)
Run Code Online (Sandbox Code Playgroud)

  • 我意识到我的建议可能不会直接解决原始问题的上下文,但搜索“pathlib os.path.join Alternative”会返回此页面作为最佳结果:-) (3认同)

小智 10

您可以简单地连接 Path 对象和字符串:

    import pathlib
    script_parent_path = pathlib.Path(__file__).parent
    my_dir = ".env"
    my_new_path = pathlib.Path(script_parent_path, my_dir)
    print(my_new_path)
Run Code Online (Sandbox Code Playgroud)

那是因为:

Pathlib 的构造函数接受pathsegmentspathsegments的每个元素可以是表示路径段的字符串、实现返回字符串的os.PathLike接口的对象或另一个路径对象 - https://docs.python.org/3/library/pathlib.html#路径库.PurePath