2011-05-27 19 views
8

Deseo cambiar el directorio actual mediante el subproceso.Cómo alternar entre directorios mediante el subproceso

Por ejemplo:

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) 

creo que esto debería funcionar como una línea de comandos UNIX

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

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

Pero no sucede ..

¿Cómo debo hacer para cambiar el dir actual?

Gracias.

+2

No creo que eso sea posible. El subdirectorio del subproceso no afecta el directorio del proceso actual. ¿Qué quieres lograr? –

Respuesta

13

Para cambiar el directorio simplemente use os.chdir() en su lugar.

También puede ejecutar comandos en direcciones específicas ejecutando subprocess.Popen(...) - tiene un parámetro opcional cwd=None. Solo úsalo para especificar el directorio de trabajo.

Además, podría echarle un vistazo a un pequeño módulo que escribí que completa algunas funcionalidades faltantes de la biblioteca estándar de Python. Probablemente este módulo especialmente https://github.com/ssbarnea/tendo/blob/master/tendo/tee.py

+0

¿No hay otra forma de resolver eso? – JonatasTeixeira

+1

BTW, no puede cambiar el directorio actual del proceso de llamada desde el proyecto llamado. Ni siquiera veo por qué querrías hacer esto alguna vez. – sorin

+1

cómo responde la pregunta? – khachik

Cuestiones relacionadas