xticks barplot python

python - barplot - pandas plot



¿Cómo cambio el directorio a mi directorio de trabajo original con Python? (5)

Tengo una función que se parece a la siguiente. No estoy seguro de cómo usar el módulo os para volver a mi directorio de trabajo original al finalizar la ejecución del jar.

def run(): owd = os.getcwd() #first change dir to build_dir path os.chdir(testDir) #run jar from test directory os.system(cmd) #change dir back to original working directory (owd)

nota: creo que el formato de mi código está desactivado, no estoy seguro de por qué. Mis disculpas de antemano


El consejo de usar os.chdir(owd) es bueno. Sería inteligente poner el código que necesita el directorio modificado en un try:finally block (o en python 2.6 y posterior, a with: block). Eso reduce el riesgo de que accidentalmente ingrese un return en el código antes del cambio. volver al directorio original.

def run(): owd = os.getcwd() try: #first change dir to build_dir path os.chdir(testDir) #run jar from test directory os.system(cmd) finally: #change dir back to original working directory (owd) os.chdir(owd)


Simplemente necesitas agregar la línea:

os.chdir(owd)

Solo una nota, esto también fue respondido en tu otra pregunta .


os.chdir (owd) debería hacer el truco (como lo has hecho al cambiar a testDir)


Python distingue entre mayúsculas y minúsculas, por lo que al escribir la ruta, asegúrese de que coincida con el directorio que desea establecer.

import os os.getcwd() os.chdir(''C://')


Un administrador de contexto es una herramienta muy apropiada para este trabajo:

from contextlib import contextmanager @contextmanager def cwd(path): oldpwd=os.getcwd() os.chdir(path) try: yield finally: os.chdir(oldpwd)

...Usado como:

os.chdir(''/tmp'') # for testing purposes, be in a known directory print ''before context manager: %s'' % os.getcwd() with cwd(''/''): # code inside this block, and only inside this block, is in the new directory print ''inside context manager: %s'' % os.getcwd() print ''after context manager: %s'' % os.getcwd()

... que producirá algo así como:

before context manager: /tmp inside context manager: / after context manager: /tmp

Esto es realmente superior al cd - shell builtin, ya que también se ocupa de cambiar los directorios cuando se cierra un bloque debido a una excepción.

Para su caso de uso específico, este sería en cambio:

with cwd(testDir): os.system(cmd)

Otra opción a considerar es usar subprocess.call() lugar de os.system() , que le permitirá especificar un directorio de trabajo para ejecutar el comando:

# note: better to modify this to not need shell=True if possible subprocess.call(cmd, cwd=testDir, shell=True)

... lo que le impediría tener que cambiar el directorio del intérprete.