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

时间:2016-02-08 18:56:03

标签: python sys

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

3 个答案:

答案 0 :(得分:6)

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

这个可以工作:它启动一个新shell,将shell的当前工作目录更改为foo,然后允许该shell在到达脚本结尾时退出跟着叫。

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

答案 1 :(得分:5)

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

答案 2 :(得分:5)

for(i=0; i < arr.length; i++){ $("#user"+i).val(arr[i]); } (它只是POSIX os.system调用的一个薄包装器)在作为当前进程的子进程启动的shell中运行该命令。在该shell中运行system只会更改该进程的当前目录,而不是父进程。