使用时os.chdir公司(path)不显示dir中的更改,但在interp中显示dir

2024-10-03 02:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在测试一些代码时,当我使用os.chdir公司('/home')例如python仍然将我的cwd显示为我启动解释器的任何地方。奇怪的是,dir实际上被改变了,但是解释器从来没有显示这个。在

这是2.7~的一些奇怪的遗留问题,还是按预期工作?今天早上我花了一段时间试图弄明白为什么我的目录在解释器中从来没有改变过,而实际上是这样。在

Im使用import os、import sys和基本python命令中的函数。在

解释程序设置: 导入操作系统 导入系统

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

此代码大致返回所需位置的home dir。基本上,我正在编写一个测试用例来测试这一点,并确保返回的结果正确无误。在进入下一步之前,当我进入解释程序测试时,我发现当您使用os.chdir公司(path)命令它实际上并不显示python解释器中的dir更改,它仍然会显示启动解释器的任何目录。 E、 g如果我在/home/user/dir1/dir2/d5中启动解释器,它将始终在解释器中显示该目录(如果您使用cwd)。即使你用os.chdir公司(newPath)它可以工作,但是解释器由于某种原因没有更新cwd。在


Tags: 代码import命令目录homeindexosdir
1条回答
网友
1楼 · 发布于 2024-10-03 02:46:05

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

相关问题 更多 >