如何使用子进程在目录间切换

8 投票
1 回答
5901 浏览
提问于 2025-04-16 18:28

我想通过子进程来改变当前的目录。

比如说:

import os, sys, subprocess

os.environ['a'] = '/home'
os.environ['b'] = '/'

subprocess.call('cd $a', shell=True)
subprocess.call('ls', shell=True)

subprocess.call('cd $b', shell=True)
subprocess.call('ls', shell=True)

我觉得这应该像在命令行的Unix系统中那样工作。

$ export a='/home'
$ export b='/'

$ cd $a
$ ls
$ cd $b
$ ls

但是并没有发生这种情况……

我该怎么做才能改变当前的目录呢?

谢谢。

1 个回答

13

要更改目录,你只需要使用 os.chdir() 这个命令。

你也可以在特定的目录中执行命令,方法是使用 subprocess.Popen(...) - 这个命令有一个可选的参数 cwd=None。你只需用它来指定工作目录。

另外,你可以看看我写的一个小模块,它补充了Python标准库中一些缺失的功能。这个模块可能特别有用,链接在这里:https://github.com/ssbarnea/tendo/blob/master/tendo/tee.py

撰写回答