我巧合的发现,我无法从python代码中改变实际的目录。我的测试,程序如下:用python改变目录
from os import system
def sh(script):
system("bash -c '%s'" % script)
sh("cd /home")
sh("pwd")
的pwd
输出不/home
,但所在的目录,上面生活的代码。
有人可以解释为什么会发生这种情况吗?
我巧合的发现,我无法从python代码中改变实际的目录。我的测试,程序如下:用python改变目录
from os import system
def sh(script):
system("bash -c '%s'" % script)
sh("cd /home")
sh("pwd")
的pwd
输出不/home
,但所在的目录,上面生活的代码。
有人可以解释为什么会发生这种情况吗?
的问题是,你执行shell命令,而不是真正改变使用os.chdir()
每个os.system()
调用该目录中的一个新的shell执行给定的命令 - 所以脚本的工作目录是不受任何影响。
sh("cd /home")
sh("pwd")
^此产卵2个分离的外壳,尝试:
sh("cd /home; pwd")
每个sh()
调用产生不同的外壳,所以你影响shell的工作目录,而不是Python的。要更改pythons工作目录,请使用chdir()
当您运行sh函数时,会生成一个新的bash进程,然后该进程将更改当前目录并退出。然后你产生一个新的进程,它对第一个bash进程发生的事情一无所知。其当前目录再次设置为当前用户的主目录。
要更改的Python进程的当前工作目录使用
os.chdir("blah")`
您应该改用os.chdir()。 –