1

我是python新手,并且有一些与子进程相关的疑问。我想去任何目录并在那个位置做点什么。所以我这样尝试:

q1 = subprocess.Popen('cd ~/Desktop/my_folder', stdout=subprocess.PIPE, shell=True)
(out1, err) = q1.communicate()  

现在当我做

q2 = subprocess.Popen('ls', stdin=q1.stdout, stdout=subprocess.PIPE, shell=True)
(out2, err) = q2.communicate()

我看到ls命令已经在我之前的地方执行了,所以这意味着q1进程被杀死了,我只想知道如何在q1进程中执行一些操作。

4

2 回答 2

1

cd有点特别。每个进程都有自己的当前工作目录。因此,当您为 创建子进程时cd ~/Desktop/my_folder,当前目录仅针对该特定子进程进行更改(更改其目录后立即退出)。

父进程以及任何其他子进程不受影响。

更改目录的最简单方法是使用os.chdir().

于 2013-04-12T07:25:33.273 回答
0

您可以通过Shutil库进行 os 相关操作。

于 2013-04-12T08:11:51.867 回答