为什么os.system("cd mydir")不工作,我们必须在python中使用os.chdir("mydir")?

sad*_*v30 2 python sys

我尝试做一个"pwd"或cwd,在cd之后,当我们使用os.system("cd")时它似乎不起作用.是否存在创建子进程的方式.这都是在Linux下.

Cha*_*ffy 6

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

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

不过,如果你想改变你的目录当前进程,而不是副本/bin/shsystem()创建,您需要调用相同的进程中运行; 因此,os.chdir().


Dav*_*rtz 5

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


Lin*_*ios 5

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