FileNotFoundError: [Errno 2] No such file or directory

python error

El error  FileNotFoundError: [Errno 2] No such file or directory, es un error común que lanza la librería OS.

En esencia este error indica que estámos intentando acceder a un archivo o carpeta que no existe, ya sea porque no está presente en la ruta de archivo en particular o porque se ha cambiado su nombre.

Normalmente verá un IOError si intenta leer o escribir en un archivo que no existe usando una instrucción open () del tipo

f = open ('nombre de archivo.txt')

Para corregirlo lo primero es  comprobar de antemano, que se está refiriendo al archivo o carpeta correcto.

Un error común es que corramos

python script.py

Cuando deberíamos llamar a la ruta correcta de esta forma

python. / script.py

Ver otros errores en Python en mi blog

Otro error que puede darse es que nuestro archivo comience con la letra n, y se confunda con una secuencia de escape; podría pasar algo asi:

path_name = "C:\name.txt " 

En este caso Python considerará \n como una secuencia de escape y nunca encontrará el archivo name.txt

Capturar el error [Errno 2] No such file or directory

Podemos capturar el error para emplearlo a conveniencia. Veamos aca algunas variantes, donde si el archivo no es encontrado manejaremos un mensaje de salida

Os

import os

path_name = "filename.txt"

if os.path.isfile(path_name):
   print("File exists")
f = open(path_name)
#Ejecutar aquí otras operaciones
f.close()

else :
   print("El archivo no existe, se encontró un error tipo IOError ")

Pathlib

from pathlib
import Path
path_name = "filename.txt"
p = Path(path_name)
if p.is_file():
   print("File exists")
f = open(path_name)
#Ejecutar aquí otras operaciones
f.close()

else :
   print("El archivo no existe, se encontró un error tipo IOError ")

Try – Except primera variante

try:
f = open("filename.txt")
#Execute other operations
f.close()
except IOError as io:
   print(io)

Try – Except segunda variante

try:
f = open("filename.txt")
#Ejecutar aquí otras operaciones
f.close()
except IOError:
   print("El archivo no existe, se encontró un error tipo IOError ")

Y hasta aquí. Espero que este post ayude a alguien.

Muchas gracias

La ira no tiene alas y es tímida, la estupidez en cambio es desenvuelta y aventurera. Por  eso volcamos nuestra ira en los que nos quieren, y nos esforzamos por complacer , a los que no importamos nada.

Y

Manejar el ValueError en Python

python error

La mejor manera de encontrar y manejar ValueError en Python, como una excepción es empleando un bloque try-except.

Coloque su declaración entre las palabras clave try y except.

Puede ver más sobre la causa de este error aquí

Si ocurre una excepción durante la ejecución, aparecerá la cláusula except que codificó.

Sería algo así:

try:
    numero = 7
    lista = []
    lista.remove(numero)
except ValueError:
	print('la lista esta vacía')

Salida


la lista esta vacía

Una vez configurado el bloque try-except, será obvio dónde está la excepción en su código.

Espero haber ayudado a alguien.

Tengo un principio y un fin, pero a veces no distingo cual es cada uno

N. Se

AttributeError: module argparse has no attribute ArgumentParser

python error

Es posible que en algún momento, hayas recibido el error: AttributeError: module argparse has no attribute ArgumentParser, al intentar importar el modulo argparser() de Python.

Bien, la causa podría ser que  has nombrado como el nombre argparse a algún archivo, o carpeta en el entorno donde estas desarrollando, y por tanto Python intentará importar primero a este archivo,  antes que a otros.

Puede ser incluso, que el archivo que se llama argparse, sea el mismo sobre el que  estas desarrollando.

Otros artículos sobre Python

Esto arrojará el ya mencionado error, porque simplemente el archivo que buscas no es  ese.

La solución como ya imaginas, es renombrar tu archivo con otro nombre, que no invite a la confusión.

Puedes ver mas sobre argparse(), en este link.

Tres cosas necesitan las ovejas para andar en manadas, el miedo al perro, la voz de amo y que la de atrás empuje por miedo a quedarse sola.

Y.

Cómo generar una excepción NotImplementedError en Python

python error

NotImplementedError extiende de BaseException. En este post, explicaré de modo simple su comportamiento de forma tal  que comprenda como generar una excepción NotImplementedError en Python.

Al extender de BaseException esto significa que es una excepción incorporada y como todas las de su tipo, puede ser generada.

Genere el NotImplementedError así:

from abc import ABC, abstractmethod

class CasaBase(ABC):
	@abstractmethod
	def color(self):
		raise NotImplementedError("Escriba  una subclase que implemente el metodo")

class Chalet(CasaBase):
	def color(self):
		return 'rojo'

class Adosado(CasaBase):
	def color(self):
		super().color()

chalet = Chalet()
adosado=Adosado()

print (chalet.color())
print(adosado.color()) # esto lanzará una excepcion NotImplementedError: "Escriba subclases que lo implementen”) 

Es así de simple; veamos la salida.

rojo
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-11-b400534f9be6> in <module>
     18 
     19 print (chalet.color())
---> 20 print(adosado.color()) # esto lanzará una excepcion NotImplementedError: "Escriba subclases que lo implementen”)

<ipython-input-11-b400534f9be6> in color(self)
     12 class Adosado(CasaBase):
     13         def color(self):
---> 14                 super().color()
     15 
     16 chalet = Chalet()

<ipython-input-11-b400534f9be6> in color(self)
      4         @abstractmethod
      5         def color(self):
----> 6                 raise NotImplementedError("Escriba  una subclase que implemente el metodo")
      7 
      8 class Chalet(CasaBase):

NotImplementedError: Escriba  una subclase que implemente el metodo

No obstante, esto es útil para generar una excepción, pero es una labor manual, que tomará mucho tiempo implementar en códigos mas largos.

Puede ver mas sobre este error aquí

Entonces, ¿ cómo generar una excepción NotImplementedError en Python?

Si se encuentra con NotImplementedError, la forma recomendada de manejarlo, es implementar el método abstracto para el que se genera el error, directamente.

Debido a que NotImplementedError lo define el usuario, Python no puede generar este error por sí solo; por lo tanto, deberá emplear algún paquete que  ya esté utilizando o el  propio código que esta escribiendo y luego implementar lo que aun falte.

Veamos un ejemplo.  

from abc import ABC, abstractmethod

class CasaBase(ABC):
	@abstractmethod
	def color(self):
		raise NotImplementedError("Escriba  una subclase que implemente el metodo")

Ahora se generará el NotImplementedError.

Así que todo lo que necesita hacer para manejar este error, es implementar la función color por una subclase antes de que se use.

Dónde encontrar htdocs en XAMPP en Mac

mac

Si está intentando encontrar htdocs en XAMPP en Mac estas en el lugar correcto, aquí te enseño como:

Abre la aplicación xampp, luego haga lo siguiente:

ir a: volúmenes,

Da clic en el botón montar [Mount] y aparecerá ahora en tu Finder como si fuera un USB externo. Si ahora has clic en explorar, te llevará directamente al lugar donde se encuentra.

Siempre hay un mañana, solo intenta que sea mejor que hoy

Y

NotImplementedError en Python

python error

Según su documentación, el NotImplementedError en Python ocurre, cuando un método abstracto carece de la clase derivada requerida, para anularlo, lo que genera esta excepción.

Analicemos esto un poco.

Si bien no proporciona clases abstractas, Python permite usar el módulo, Abstract Base Classes (ABC).

Las clases abstractas son útiles porque crean escenarios para otras clases y establecen  al mismo tiempo, un conjunto de métodos.

from abc import ABC, abstractmethod

class CasaBase(ABC):

	@abstractmethod
	def color(self):
		raise NotImplementedError("Escriba  una subclase que implemente el metodo")

Una clase base abstracta, incluye uno o más métodos abstractos (entiéndase, métodos que han sido declarados, pero carecen de implementación).

Las subclases, o clases secundarias, son necesarias para implementar estos métodos abstractos.

Por tanto, si usted recibe un NotImplementedError en Python esto se deberá a una de estas razones:

1. No ha creado una clase derivada, que anule el método abstracto

2. No ha implementado la clase.

Puede ver aquí como generar una excepción del error NotImplementedError

El amor siempre empieza soñando y termina en insomnio

R. Arjona

TypeError: static() got an unexpected keyword argument ‘document_root’ in Django»

django error

El error typeError: static() got an unexpected keyword argument ‘document_root, puede aparecer, en Django cuando intentamos añadir en nuestro urls.py

+= static(settings.MEDIA_URL, documnet_root=settings.MEDIA_ROOT)

Esta modificación de las urls, la hacemos para decirle a Django, en qué lugar se encuentran nuestros archivos media.

Si nos fijamos en el contenido de nuestro archivo settings.py, debe aparecer la dirección que indica , dónde guardamos nuestros archivos estáticos y en que lugar nuestros archivos tipo media.

Es algo asi

MEDIA_URL = '/media/'
 MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'media')
 STATIC_URL = '/static/' 

Dicho esto, el error ‘TypeError: static() got an unexpected keyword argument ‘document_root‘ puede proceder de diversas fuentes, dos de las que conozco y me resultan más comunes son:

 Importar de modo incorrecto la ruta del método static utilizando:

 from django.templatetags.static import static

cuando deberiamos importar

 from django.conf.urls.static import static   

El primero de ellos nos permite manejar archivos estáticos, como css, javascript o imágenes.

El segundo  es una una función helper que nos devuelve la  url,  donde se encuentra un contenido especifico  y su estructura es:

static.static(prefixview=django.views.static.serve**kwargs)

import *

Si, así es. El segundo error es emplear el uso de import *, que por más que pueda parecer cómodo , me ha traído algún de un dolor de cabeza.

En este articulo pueden ampliar conocimiento sobre sus inconvenientes.

“….El amor siempre empieza soñando y termina en insomnio“

R.Arjona

No se muestran los gráficos en Seaborn

seaborn error

Si tienes problemas al visualizar tus datos por que no se muestran los gráficos en Seaborn, tu solución podría ser esta.

Los gráficos creados con Seaborn deben mostrarse como gráficos Matplotlib ordinarios. Esto se puede hacer usando :

plt.show ()

Basta importar  el módulo matplotlib.pyplot y muestre sus gráficos con

import matplotlib.pyplot as plt

plt.show()

Si en tu caso estas empleando Python notebook puedes invocar el inline para eliminar la necesidad de llamar a show() después de cada trazado.

Puedes llamarlo así:

%matplotlib inline

Puedes contactar conmigo aquí

Quien va en busca de montañas no puede detenerse a recoger las piedras del camino.

J. Martí

El uso de with en Python

logo python

Si has llegado hasta aquí, debe ser porque te interesa que nos facilita el uso de with en Python, al principio de un bloque de código.

Entonces, intentaré no defraudarte y explicártelo de forma sencilla.

with() es lo que se conoce como un manejador de contexto.

Al usar with() Python  lo que hace abstraernos del código repetitivo ya que  corre a cuenta de with  cerrar el fichero  después de ejecutarse el código que se encuentra en el interior del bloque, incluso si ocurre alguna excepción.

Como with() nos facilita las tareas repetitivas su efecto es similar a una bucle del tipo try-finally.

with open('hola.txt', 'r') as f:
for linea in f:
...

Esto equivaldría a algo así:

f = open('hola.txt', 'r')
try:
for linea in f:
...
finally:
f.close()

Y esto es todo.

Espero modestamente ayudar a alguien.

La ignorancia es la muerte de los vivos

D.

Sumar y restar días en Python con datetime.

logo python

Por el uso tan amplio de Python es realmente necesario poder sumar y restar días en Python, y para eso podemos emplear la librería datetime.

En situaciones donde necesitamos llevar un seguimiento de la fecha y la hora, podemos emplear este modulo que es el encargado de de manipular fechas y horas, y está integrado en la biblioteca estándar de Python.

Las clases con las que cuenta el modulo son:

 NOMBREDESCRIPCIÓN
1.fechaMuestra la fecha según el calendario georgiano con atributos como año, mes y día.
2.horaMuestra el tiempo, independientemente de cualquier día en particular, con atributos como hora, minuto, segundo, microsegundo y tzinfo.
3.fecha y horaEs una colección de fecha y hora con los atributos año, mes, día, hora, minuto, segundo, microsegundo y tzinfo.
4.timedeltaSe utiliza para manipular la fecha.
5.tzinfoProporciona información sobre la zona horaria.

Otros post sobre Python

TIMEDELTA  para sumar y restar

Para sumar o restar fecha, usamos la función timedelta() ya que permite realizar operaciones aritméticas con las fecha como sumar o restar y es fácilmente implementable.

La sintaxis es la siguiente

class datetime.timedelta(días = 10, segundos = 40, microsegundos = 10, milisegundos = 60, minutos = 10, horas = 4, semanas = 8)

Nota: si no especificamos por defecto, toma el entero como un día. 

Sumar 10 días 

from datetime import date, timedelta
 
hoy = date.today()
 
print("hoy es : ", hoy)
 
td = timedelta(10)
print("Dentro de 10 diás estaremos a : ", hoy + td)

Restar 1 día 

from datetime import date, timedelta
 
hoy = date.today()
 
print("hoy es : ",hoy)
 
print("ayer fue : ",ayer - timedelta(1))

Sumar tiempos específicos

from datetime import datetime, timedelta
 
ahora = datetime.now()
print("Current Date and time :- ", curr)
 
nuevo = timedelta(days = 10, seconds = 40, 
                         microseconds = 10,
                         milliseconds = 60, 
                         minutes = 10, hours = 4,
                         weeks = 8)
 
print("nuevo tiempo calculado :- ", nuevo + new_datetime)
from datetime import datetime, timedelta
  
  
ahora = datetime.now()
  
# printing initial_date
print ("fecha inicio", str(ahora))
  
# Calculamos fechas futuras
en_dos_anos = ahora + \
                        timedelta(days = 730)
  
en_dos_dias = ahora + \
                         timedelta(year = 2)
  

print('en dos años estaresmos a:', str(en_dos_anos))
print('en dos dias será:', str(en_dos_dias))

Y hasta aquí, espero sinceramente que este articulo sirva de ayuda a alguien.

Y todo como el diamante antes que luz, fue carbón.

J. Martí
Translate »