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)
_
代わりに、この answer のように、_subprocess.Popen
_クラスのcwd
パラメータを使用することをお勧めします。
Python <3.6でpath
が実際には_pathlib.Path
_である場合、chdir
ステートメントにstr(path)
が必要です。
Python 3.6以降では、os.chdir()
はPath
オブジェクトを直接処理できます。実際、Path
オブジェクトはほとんどのstr
標準ライブラリのパス。
os。chdir(path)現在の作業ディレクトリをパスに変更します。
この関数は、ファイル記述子の指定をサポートできます。記述子は、開いているファイルではなく、開いているディレクトリを参照する必要があります。
バージョン3.3の新機能:一部のプラットフォームでファイル記述子としてパスを指定するためのサポートが追加されました。
バージョン3.6で変更: path-like object を受け入れます。
import os
from pathlib import Path
path = Path('/etc')
os.chdir(path)
これは、3.5以下との互換性が不要な将来のプロジェクトで役立つ場合があります。
サードパーティライブラリ を使用してもかまわない場合:
$ 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.
または コンテキストマネージャ なしで実行する場合:
Path("somewhere").cd()
# current working directory is now changed to `somewhere`