如何使用 Python pathlib 更改目录
How can I change directory with Python pathlib
使用 Python pathlib
(Documentation) 功能更改目录的预期方法是什么?
假设我创建了一个 Path
对象,如下所示:
from pathlib import Path
path = Path('/etc')
目前我只知道以下内容,但这似乎破坏了pathlib
的想法。
import os
os.chdir(str(path))
根据评论,我意识到 pathlib
对更改目录没有帮助,应尽可能避免目录更改。
因为我需要从正确的目录调用 Python 之外的 bash 脚本,所以我选择使用上下文管理器来更简洁地更改目录,类似于 answer :
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)
一个好的替代方法是使用 subprocess.Popen
class 的 cwd
参数,如 answer.
如果您使用 Python <3.6 并且 path
实际上是一个 pathlib.Path
,您需要 str(path)
在 chdir
语句中。
在Python 3.6 或更高版本中,os.chdir()
可以直接处理Path
对象。事实上,Path
对象可以替换标准库中的大多数 str
路径。
os.chdir(path) Change the current working directory to path.
This function can support specifying a file descriptor. The descriptor
must refer to an opened directory, not an open file.
New in version 3.3: Added support for specifying path as a file
descriptor on some platforms.
Changed in version 3.6: Accepts a path-like object.
import os
from pathlib import Path
path = Path('/etc')
os.chdir(path)
这可能有助于将来不必与 3.5 或更低版本兼容的项目。
如果您不介意使用 a third-party library:
$ pip install path
然后:
from path import Path
with Path("somewhere"):
# current working directory is now `somewhere`
...
# current working directory is restored to its original value.
或者如果您想在没有 context manager 的情况下执行此操作:
Path("somewhere").cd()
# current working directory is now changed to `somewhere`
使用 Python pathlib
(Documentation) 功能更改目录的预期方法是什么?
假设我创建了一个 Path
对象,如下所示:
from pathlib import Path
path = Path('/etc')
目前我只知道以下内容,但这似乎破坏了pathlib
的想法。
import os
os.chdir(str(path))
根据评论,我意识到 pathlib
对更改目录没有帮助,应尽可能避免目录更改。
因为我需要从正确的目录调用 Python 之外的 bash 脚本,所以我选择使用上下文管理器来更简洁地更改目录,类似于 answer :
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)
一个好的替代方法是使用 subprocess.Popen
class 的 cwd
参数,如 answer.
如果您使用 Python <3.6 并且 path
实际上是一个 pathlib.Path
,您需要 str(path)
在 chdir
语句中。
在Python 3.6 或更高版本中,os.chdir()
可以直接处理Path
对象。事实上,Path
对象可以替换标准库中的大多数 str
路径。
os.chdir(path) Change the current working directory to path.
This function can support specifying a file descriptor. The descriptor must refer to an opened directory, not an open file.
New in version 3.3: Added support for specifying path as a file descriptor on some platforms.
Changed in version 3.6: Accepts a path-like object.
import os
from pathlib import Path
path = Path('/etc')
os.chdir(path)
这可能有助于将来不必与 3.5 或更低版本兼容的项目。
如果您不介意使用 a third-party library:
$ pip install path
然后:
from path import Path
with Path("somewhere"):
# current working directory is now `somewhere`
...
# current working directory is restored to its original value.
或者如果您想在没有 context manager 的情况下执行此操作:
Path("somewhere").cd()
# current working directory is now changed to `somewhere`