使用Python pathlib (文档)功能更改目录的预期方法是什么?
让我们假设我创建一个Path对象如下:
from pathlib import Path
path = Path('/etc')
Run Code Online (Sandbox Code Playgroud)
目前我只知道以下内容,但这似乎破坏了这个想法pathlib.
import os
os.chdir(str(path))
Run Code Online (Sandbox Code Playgroud)
Luk*_*kas 15
基于这些评论,我意识到这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)
Run Code Online (Sandbox Code Playgroud)
一个很好的选择是使用该答案cwd中的subprocess.Popen类的参数.
如果您使用的是Python <3.6并且path实际上是一个pathlib.Path,则需要str(path)在chdir语句中使用.
在Python 3.6或更高版本中,os.chdir()可以Path直接处理对象。实际上,该Path对象可以替换str标准库中的大多数路径。
os。chdir(路径)将当前工作目录更改为path。
该功能可以支持指定文件描述符。描述符必须引用打开的目录,而不是打开的文件。
版本3.3中的新增功能:在某些平台上增加了对将路径指定为文件描述符的支持。
在版本3.6中更改:接受类似路径的对象。
import os
from pathlib import Path
path = Path('/etc')
os.chdir(path)
Run Code Online (Sandbox Code Playgroud)
这可能会在将来的项目中提供帮助,这些项目不必与3.5或更低版本兼容。
| 归档时间: |
|
| 查看次数: |
7900 次 |
| 最近记录: |