如何使用 Python pathlib 更改目录

新手上路,请多包涵

使用 Python pathlib (文档) 功能更改目录的预期方法是什么?

假设我创建了一个 Path 对象,如下所示:

 from pathlib import Path
path = Path('/etc')

目前我只知道以下内容,但这似乎破坏了 pathlib 的想法。

 import os
os.chdir(str(path))

原文由 Lukas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 804
2 个回答

根据评论,我意识到 pathlib 无助于更改目录,应尽可能避免目录更改。

由于我需要从正确的目录调用 Python 外部的 bash 脚本,因此我选择使用上下文管理器来更简洁地更改目录,类似于此 答案

 import os
import contextlib
from pathlib import Path

@contextlib.contextmanager
def working_directory(path):
    """Changes working directory and returns to previous on exit."""
    prev_cwd = Path.cwd()
    os.chdir(path)
    try:
        yield
    finally:
        os.chdir(prev_cwd)

一个好的替代方法是使用 cwd 参数 subprocess.Popen 类中的这个 答案

If you are using Python <3.6 and path is actually a pathlib.Path , you need str(path) in the chdir statements.

原文由 Lukas 发布,翻译遵循 CC BY-SA 3.0 许可协议

在Python 3.6或以上版本中, os.chdir() 可以直接处理 Path 对象。事实上, Path 对象可以替代标准库中的大多数 str 路径。

操作系统。 chdir (path) 将当前工作目录更改为path。

该函数可以支持指定文件描述符。描述符必须引用打开的目录,而不是打开的文件。

3.3 新版功能:在某些平台上添加了对将路径指定为文件描述符的支持。

在 3.6 版更改: Accepts a path-like object

 import os
from pathlib import Path

path = Path('/etc')
os.chdir(path)

这可能有助于将来不必与 3.5 或更低版本兼容的项目。

原文由 Yan QiDong 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题