Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

259
Vistas
Python intente excepto, vuelva a intentarlo después de ejecutar la instrucción excepto

Estoy tratando de ejecutar una declaración, pero si falla, quiero ejecutar la declaración de excepción y luego quiero ejecutar el intento nuevamente. Sé que puedo usar bucles, pero estoy buscando una solución más elegante.

En mi caso de uso, trato de guardar un archivo en una carpeta, pero si obtengo el FileNotFoundError, quiero crear la carpeta en la excepción y volver a intentarlo.

 from pathlib import Path import os folder = Path('folder') df = [a,b,c] try: df.to_feather(folder / 'abc.ftr') except: os.makedirs(folder) df.to_feather(folder / 'abc.ftr')

Pero en este caso repetiría la df.to_feather(folder / 'abc.ftr') . Esto se vuelve molesto si la declaración se hace más grande y quiero abstenerme de construir una función para esto.

Otra forma podría ser:

 if folder not in os.listdir(): os.makedirs(folder) df.to_feather(folder / 'abc.ftr')

¿Sería esta la forma 'adecuada' de abordar esto?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Para responder a la pregunta en el título, puede hacer esto recursivamente:

 def do_stuff(x): try: stuff(x) except SpecificException: other_stuff(x) do_stuff(x)

Si desea crear un archivo, simplemente puede usar:

 pathlib.Path('/tmp/sub1/sub2').mkdir(parents=True, exist_ok=True)
over 4 years ago · Santiago Trujillo Denunciar

0

Dado python3.2 os.makedirs tiene un argumento exist_ok opcional, que de forma predeterminada es False . Cuando se establece en True y os.makedirs recibe instrucciones para crear catálogos que ya existen, no es una operación. Así en lugar de

 if folder not in os.listdir(): os.makedirs(folder) df.to_feather(folder / 'abc.ftr')

solo puedes hacer

 os.makedirs(folder, exist_ok=True) df.to_feather(folder / 'abc.ftr')
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda