关于python:当使用os.chdir(path)时没有在dir中显示更改但是在解释器中更改了dir

When using os.chdir(path) doesnt show a change in dir but does change dir in the interpreter

当我使用os.chdir('/ home')时,我遇到了一些有趣的东西,当我使用os.chdir('/ home')时,python仍会显示我的cwd,就像我启动解释器一样。它变得奇怪的是dir实际上正在被改变但是解释器从未表现出这一点。

这是2.7的一些奇怪的遗产吗?或者这是否按预期工作?今天早上我花了一些时间试图弄清楚为什么我的目录在解释器里面从未改变过。

我使用import os,import sys和basic python命令中的函数。

口译员设置:
进口口
导入系统

1
2
3
4
5
6
7
8
9
10
11
12
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)命令它实际上并没有显示python解释器中的dir更改时,它仍然会显示任何目录你是从那里开始翻译的。
例如,如果我在/ home / user / dir1 / dir2 / d5中启动解释器,如果使用cwd,它将始终在解释器中显示该目录。即使你用os.chdir(newPath)改变了它,它确实有效,但解释器由于某种原因没有更新cwd。


如果你的意思是使用cwd变量,比如print(cwd),那么问题是如果你的findAHomeP函数在开始时将cwd设置为os.getcwd()返回的值,那么后来改变了 当前工作目录os.chdir()。 如果需要新的当前工作目录,则需要再次调用os.getcwd(),而不要使用存储在cwd中的(现在过时)值。