Я столкнулся с чем-то интересным, когда ошибка тестировала некоторый код, когда я использую 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 по какой-то причине.
Если вы имеете в виду использование переменной cwd, например print(cwd), то проблема в том, что вы установили cwd как значение, возвращаемое os.cwd() в начале, если ваша функция findAHomeP, затем позже изменил текущий рабочий каталог на os.chdir(). Если вам нужен новый текущий рабочий каталог, вам нужно снова вызвать os.cwd(), а не использовать (теперь устаревшее) значение, сохраненное в cwd.