Foros del Web » Programando para Internet » Python »

capturar excepciones de os.system

Estas en el tema de capturar excepciones de os.system en el foro de Python en Foros del Web. Hola todos estoy interactuando con el sistema desde python pero tengo problemas para capturar las excepciones leí la documentación de aquí http://docs.python.org/library/errno.html#module-errno pero la verdad ...
  #1 (permalink)  
Antiguo 21/03/2012, 15:14
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
capturar excepciones de os.system

Hola todos estoy interactuando con el sistema desde python pero tengo problemas para capturar las excepciones


leí la documentación de aquí http://docs.python.org/library/errno.html#module-errno

pero la verdad que no entiendo como implementarlo.

mi código seria algo así

Código Python:
Ver original
  1. import os
  2. import errno
  3.  
  4. try:
  5.     os.system('dir no')
  6. except OSError:
  7.     print ' error'

Como se capturan este tipo de excepciones ?


gracia por lerme
  #2 (permalink)  
Antiguo 21/03/2012, 16:34
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: capturar excepciones de os.system

Tal como lo hiciste, excepto que es raro que os.system produzca una excepción. Incluso si el comando que pones falla no significa que lance una excepción.

Esto es un ejemplo de una excepción.

Código Python:
Ver original
  1. try:
  2.     print 0 / 0
  3. except ZeroDivisionError:
  4.     print "Error: Division entre cero"
  #3 (permalink)  
Antiguo 21/03/2012, 21:38
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: capturar excepciones de os.system

Muchas gracias razpeitia , lo mio es un error de apreciación.

Entonces un error en la ejecución de un comando no seria una excepción ... ahora me cambio la perspectiva.


Lo que debo hacer es redirigir la salida estándar del comando y así capturar el error ( stdout y stderr )

Código Python:
Ver original
  1. import os
  2. import subprocess
  3. from subprocess import Popen, PIPE, STDOUT
  4.  
  5. cmd = subprocess.Popen(["dir", "no"],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  6. out, error = cmd.communicate()
  7. print out
  8. print error

Listo solucionado

Etiquetas: excepciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:14.