Na podstawie uwag zrozumiałem, że pathlib
nie pomaga zmieniających katalogi i że zmiany katalogów należy unikać, jeśli to możliwe.
Ponieważ musiałem zadzwonić skrypty bash poza Pythonie z właściwego katalogu, zdecydowałem się za pomocą menedżera kontekstowe dla czystszego sposób zmiany katalogów podobne do tego 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)
Dobrą alternatywą jest użyj parametru cwd
klasy subprocess.Popen
, jak w tym answer.
Jeśli używasz Python < 3,6 i path
jest rzeczywiście pathlib.Path
trzeba str(path)
w sprawozdaniu chdir
.
Zmiana katalogu bieżącego rzadko jest dobrym pomysłem. Dlaczego musisz zmienić katalog? –
Istnieje mały skrypt bash, który chcę przepisać w Pythonie. W ten sposób łatwiej poradzę sobie z błędami niż wywoływanie zewnętrznego skryptu bash. – Lukas
nie musisz używać 'pathlib' jeśli go nie potrzebujesz -' os.chdir ('/ etc') ' – furas