При использовании os.chdir (path) не отображается изменение в каталоге dir, но изменяет dir в интерпретаторе

Я столкнулся с чем-то интересным, когда ошибка тестировала некоторый код, когда я использую os.chdir ('/ home'), например, python все равно покажет мой cwd, как я начал интерпретатор. Там, где это странно, директория фактически изменяется, но интерпретатор никогда не показывает этого.

Это какое-то странное наследие 2,7 ~ или это что-то работает по назначению? Я провел некоторое время этим утром, пытаясь понять, почему мой каталог никогда не менялся внутри интерпретатора, когда он был на самом деле.

Я использую функции из импортных команд os, import sys и basic python.

Настройка интерпретатора: import os import sys

def findAHomeP(homeDir="randomDirName"):
    cwd = os.cwd()
    splitCwd = cwd.split('/')
    try:
        index = splitCwd.index(homeDir)
    except NameError as e:
        print "error stuff"
        return cwd

    newPath = '/'.join(splitCwd[0:index+1])+'/'

    return newPath

Этот код грубо возвращает домашний каталог для желаемого местоположения. В основном я писал тестовый пример, чтобы проверить это и убедиться, что результаты вернулись правильно. Когда я входил в интерпретатор для проверки вещей, прежде чем перейти к следующему шагу, я обнаружил, что когда вы используете команду os.chdir (path), на самом деле это не показывает изменение dir в интерпретаторе python, оно все равно покажет любую директорию вы запустили интерпретатор. Например, если я запустил интерпретатор в / home / user / dir1 / dir2 / d5, он всегда будет отображать этот каталог внутри интерпретатора, если вы используете cwd. Даже если вы изменили его с os.chdir (newPath), который работает, но интерпретатор не обновляет cwd по какой-то причине.

0
задан 13 August 2018 в 15:48

1 ответ

Если вы имеете в виду использование переменной cwd, например print(cwd), то проблема в том, что вы установили cwd как значение, возвращаемое os.cwd() в начале, если ваша функция findAHomeP, затем позже изменил текущий рабочий каталог на os.chdir(). Если вам нужен новый текущий рабочий каталог, вам нужно снова вызвать os.cwd(), а не использовать (теперь устаревшее) значение, сохраненное в cwd.

0
ответ дан 15 August 2018 в 17:01
  • 1
    @mdayThis все было сделано через интерпретатор на другой автономной системе, которую у меня есть. Код был в основном таким, чтобы люди могли понять, что я делаю с интерпретатором. Я полагаю, что проблема заключается в том, что интерпретатор использует статическое значение, из которого он работает при использовании базовой команды cwd и вызове os.cwd (), который выполняет фактический вызов, чтобы увидеть, что cwd vs просто использует cwd, который возвращает статическое значение это любой каталог, из которого вы запускали интерпретатор изначально. – Richard Smith 14 August 2018 в 14:34

Другие вопросы по тегам:

Похожие вопросы: