用python更改目录

时间:2012-12-05 20:53:40

标签: python bash

我巧合地发现我无法在python代码中更改实际目录。我的测试程序如下:

from os import system

def sh(script):
    system("bash -c '%s'" % script)

sh("cd /home")
sh("pwd")

pwd的输出不是/home,而是上面代码所在的目录。

有人可以解释为什么会这样吗?

5 个答案:

答案 0 :(得分:6)

问题是您执行shell命令而不是使用os.chdir()

实际更改目录

每个os.system()调用在新shell中执行给定命令 - 因此脚本的工作目录根本不受影响。

答案 1 :(得分:5)

目录实际上已更改,但在另一个进程中,即脚本的子级。要记住一条简单的规则:孩子永远不会影响其父母的环境(PATH,CWD等)。

答案 2 :(得分:3)

sh("cd /home")
sh("pwd")

^这会生成2个独立的shell,请尝试:

sh("cd /home; pwd")

答案 3 :(得分:2)

运行sh函数时,会生成一个新的bash进程,然后更改当前目录并退出。然后你产生一个新的进程,它不知道第一个bash进程发生了什么。它的当前目录再次设置为当前用户的主目录 要更改Python进程'当前工作目录使用

os.chdir("blah")`

答案 4 :(得分:1)

每个sh( )调用都会生成一个不同的shell,因此您正在影响shell的工作目录,而不是python的。要更改pythons工作目录,请使用chdir()