关于sys:为什么os.system(“ cd mydir”)无法正常工作,而我们必须在python中使用os.chdir(“ mydir”)?


Why does not os.system(“cd mydir”) work and we have to use os.chdir(“mydir”) instead in python?

本问题已经有最佳答案,请猛点这里访问。

我试过做cd之后的" pwd"或cwd,当我们使用os.system(" cd")时它似乎不起作用。 子进程的创建方式是否正在发生变化。 这一切都在Linux下。


os.system('cd foo')运行/bin/sh -c"cd foo"

确实有效:它启动一个新的Shell,将该Shell的当前工作目录更改为foo,然后允许该Shell在到达其调用脚本的末尾时退出。

但是,如果要更改当前进程的目录,而不是system()创建的/bin/sh副本,则需要在同一进程中运行该调用。因此,os.chdir()


os.system(这只是POSIX system调用的一个薄包装)在作为当前进程的子级启动的shell中运行命令。在该shell中运行cd只会更改该进程的当前目录,而不会更改父目录。


system调用创建一个新进程。如果执行system("cd ..,则将创建一个新进程,然后更改其自己的当前工作目录并终止。如果子进程更改其当前工作目录会神奇地更改其父级的当前工作目录,那将非常令人惊讶。发生这种情况的系统将很难使用。