Как чередовать каталоги с помощью подпроцесса - PullRequest
8 голосов
/ 27 мая 2011

Я хочу изменить текущий каталог с помощью подпроцесса.

Например:

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 голосов
/ 27 мая 2011

Чтобы изменить каталог, просто используйте os.chdir().

Вы также можете выполнять команды в определенных директориях, запустив subprocess.Popen(...) - у него есть необязательный параметр cwd=None.Просто используйте его, чтобы указать рабочий каталог.

Кроме того, вы можете взглянуть на небольшой модуль, который я написал, который завершает некоторые недостающие функции из стандартной библиотеки Python.Вероятно, этот модуль особенно https://github.com/ssbarnea/tendo/blob/master/tendo/tee.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...