为什么 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?

我试过做"pwd"或者cwd,cd之后,用os.system("cd")好像不行。子进程的创建方式是否有问题。这都在 Linux 之下。

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

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

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

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

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