Лучшая оболочка для Python для "CD -" - PullRequest
0 голосов
/ 27 октября 2019

Я хочу поменять каталог обратно в скрипт Python. Из Bash я бы сделал cd "bla/bla", а затем cd - или pushd "bla/bla" > /dev/null, а затем popd.

В Python нет обёрток для pushd, popd или - (чтопеременная оболочки). Есть ли лучший способ, чем:

import os
curr_dir = os.getcwd()
os.chdir('bla/bla')
...
is.chdir(old_dir)

ИЛИ

import path # after pip install https://github.com/jaraco/path.py
with path.Path('bla/bla'):
    ...

, который включает другую не встроенную зависимость и не очень очевиден, IMO

?

1 Ответ

1 голос
/ 27 октября 2019

Не думаю, что в os есть что-то, что делает это:

from os import chdir, getcwd

_stack = []

def pushd(dir):
    global _stack
    _stack.append(getcwd())
    chdir(dir)

def popd():
    chdir(_stack.pop())

Учитывая контекст, я бы предпочел ваш пример with Path(dir): во многих ситуациях. Вы, вероятно, пытаетесь уйти от bash, а не копировать его:)

...