Escribir en un fichero en Python

logo python

La tarea de escribir en un fichero en Python es algo común, que forma parte de los primeros pasos, en este lenguaje.

Veamos como hacerlo.

Partamos de considerar que un fichero es un objeto de la clase File, que, sirven para guardar datos en disco que podrán ser leídos posteriormente, ver cómo leer ficheros línea a línea en Python.

Los ficheros con los que trabajaremos en Python regularmente pertenecen o bien al tipo texto o al tipo binario.

Los primeros son aquellos con caracteres legibles para el ser humano, y generalmente codificados para hacer mas fácil su comprensión.

Los segundos, son archivos compuestos por un flujo de bytes  diseñados para ser leídos o utilizados por  programas o aplicaciones especificas.

Para escribir un fichero en Python, debemos abrirlo con open() , al igual que si vamos a leerlo.

Llamar a open automáticamente crea automaticamente un objeto de la clase File.

open(), recibe dos parámetros o argumentos, la ruta donde se encuentra el fichero(path), y el modo en que abrirmos el fichero(lectura,escritura,etc).

Su sintaxis entonces es:

open(path, modo)

Por defecto el modo en que se abre es el modo texto, si necesitamos que Python lo abra en modo binario, deberemos pasarle al modo el argumento b.

Los modos en los que se puede abrir un fichero de tipo texto son:

rSolo lectura y es el modo por defecto si no se indica lo contrario
wSolo escritura, si ya existe el fichero, sobreescribe su contenido.
aAdición. En el fichero solo se puede escribir, por tanto si existe el fichero, aquello que se escriba se añadirá al final del mismo.
xSolo escritura, pero lanzará una excepción si ya  existe el fichero.
r+Lectura y escritura.

Su variante para ficheros del tipo binario es :  rb, wb, ab, xb, rb+.

Entonces para a estructura para abrir un fichero en modo escritura solo necesitamos hacer esto:

Miarchivo = open('miruta/mi_fichero' ,  'w' )
#o esto:
Miarchivo= open('miruta/mi_fichero' ,  'w' )
try:
# acciones para escribir en el fichero
finally:
Miarchivo.close()

O  empleando with, que no brinda lo mismo que el bloque  try – finally, pero en un una sola sentencia with - as.

with open('miruta/mi_fichero' ,  'w' )as f:
# acciones para escribir en el fichero

Una vez abierto el fichero en formato escritura, toca escribirlo, lo cual haremos con write().

Miarchivo = open('miruta/mi_fichero' ,  'w' )
Miarchivo.write('Bienvenidos \n'')
#o esto:
Miarchivo= open('miruta/mi_fichero' ,  'w' )
try:
Miarchivo.write('Bienvenidos \n')
finally:
Miarchivo.close()

#con with
with open('miruta/mi_fichero' ,  'w' )as f:
Miarchivo.write('Bienvenidos \n')

Para escribir un fichero binario añadimos el carácter b:

with open('miruta/mi_fichero' ,  'w' )as f:
Miarchivo.write(b'0x34')

Y esto es todo.

Espero sinceramente poder ayudar a alguien.

El miedo puede hacer que un burro ataque a un león

Obtener la hora y la fecha en Python

logo python

Algo tan sencillo, como obtener la hora y la fecha en Python, es algo que debemos saber, al comenzar con este lenguaje. Aquí muestro como hacerlo.

Para obtener la hora actual en Python tenemos dos módulos incorporados al lenguaje . Estos son time y  datetime.

Time

import time
# time.strftime para obtener la hora actual en Python
a = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(a)
b =time.ctime

ctime() es útil para para obtener el día de la semana, el mes, el día, la hora y el año.

time.localtime()  nos devuelve la hora local de la zona horaria en la que estamos, mientras que time.gmtime() nos devuelve la  hora UTC.

 Datetime 

from datetime import datetime
fechaTotal = datetime.now()
print(fechaTotal)
añoYhora = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(añoYhora)
hora = datetime.now().time()
print(hora)

En el código anterior estamos obteniendo un  objeto a de tipo datetime() que incluye toda la información de la fecha, incluyendo el año, el mes, el día y la hora.

Podemos transformarlo a formato string, usando  método strftime().

Para obtener solo la hora podemos emplear datetime.time().

Y hasta aquí.

Espero modestamente, haber ayudado a alguien.

Para ser parte del 1%, hay que hacer lo que el 99%  no hace.

Listar ficheros de un directorio en Python con iterdir()

logo python

En otras ocasiones he hablado sobre otros métodos para listar ficheros, veamos hoy como listar ficheros de un directorio en Python, con iterdir().

Iterdir() es una función iteradora de Python que recorre el contenido de el directorio especificado, en la ruta que le asigne.

Pertenece al módulo pathlib,  a diferencia de scandir cuya función es parecida, pero que es pertenece al modulo os.

Pathlib como os crea objetos diseñador para manejar ficheros y directorios de forma eficiente.

Al listar un directorio, se crea  un objeto Path. Los objetos de clase Path poseen también la propiedad name, y los métodos is_file()  e  is_dir(), que permiten comprobar si una entrada es  un archivo o un directorio.

import pathlib
dir = "/Users/blackmaster/Downloads/"
directorio = pathlib.Path(dir)
for fichero in directorio.iterdir():
    #print(fichero.name)
    if fichero.is_file:
        print('\n archivo:' +fichero.name)
    if fichero.is_dir:
        print('\n Carpeta:' + fichero.name )

Y hasta aquí.

Espero que este articulo sirva de ayuda a alguien.

El que siempre soñó, tiene derecho a ganar

Ordenar fechas con sort en Python

logo python

Una forma muy sencilla y útil de organizar cronológicamente elementos, es ordenar las fechas con sort en Python.

Para esto, solo debemos añadir las fechas a una lista, y luego aplicarles el método sort().

En el ejemplo siguiente añadiremos fechas a una lista empleando el método append() y luego aplicaremos sort().

Otros post sobre fechas con Python

import datetime  
# Entramos por teclado las fechas

grupo_fechas=[]

fecha_1 = [input("Introduzca fecha"
        "(DD/MM/YYYY) : ").split('/')]
  
grupo_fechas.append(fecha_1)

fecha_2 = [input("Introduzca fecha"
        "(DD/MM/YYYY) : ").split('/')]
  
grupo_fechas.append(fecha_2)

fecha_3 = [input("Introduzca fecha"
        "(DD/MM/YYYY) : ").split('/')]
  
grupo_fechas.append(fecha_3)
grupo_fechas.sort()
  
for x in grupo_fechas:
    print(x)

El resultado nos devolverá las fechas que introduzcamos organizadas

Y esto es todo, espero sinceramente que este post, sirva a alguien.

No discutas nunca con un imbécil, te llevará a su terreno y allí te ganará por experiencia

D.

Convertir una fecha a fecha y hora en Python

logo python

En este post, muestro otra forma de trabajar con el modulo datetime , empleándolo cuando necesitamos convertir una fecha a fecha y hora en Python

Desde mi conocimiento existen dos modos de hacerlo, una es mediante el uso directo de datetime y el otro utilizando combine datetime().

Aquí puedes ver como sumar y restar fechas con datetime en Python.

Partamos del supuesto que necesitas combinar la fecha y la hora en un solo objeto

Si solo tiene una fecha específica o la fecha actual y no tiene una hora específica, puede inicializarla con el tiempo mínimo usando el objeto datetime

En el ejemplo siguiente importamos la librería datetime, creamos una variable para la fecha, otra para la hora y las combinamos ambas, con combine().

Ejemplo 1

from datetime import date as Hoy
from datetime import datetime as HoyHora
fechaHoy =  Hoy.today()
print(fechaHoy)
horaHoy  =  HoyHora.now().time()
print(horaHoy)
FechaHoraHoy = FechaHoraHoy.combine(fechaHoy, horaHoy )
print(FechaHoraHoy)

Otra  cosa que podemos hacer es extraer  la fecha desde un objeto dado.

from datetime import date as fecha
from datetime import datetime as tiempo
fecha = fecha.today()
print(fecha)
tiempo = tiempo(fecha.year, fecha.month, fecha.day)
print(tiempo)

Y hasta aquí.

Espero que este post, sirva de ayuda a alguien.

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

Y.

Leer un fichero línea a línea en Python

logo python

Una tarea común y cotidiana es  leer un fichero línea a línea en Python, lo cual el lenguaje facilita mucho, pero no deja de ser algo que vale la pena explicar.

Para leer un fichero debemos abrirlo con la función open() y luego emplearemos un for para recorrerlo y leerlo.

Es algo así:

with open('ruta_del_fichero') as f:
for linea in f:
 	#codigo….

o así:

#guardamos el contenido del fichero en una variable y lo leemos
fichero = open('ruta_del_fichero', ‘r’)
leído=fichero.read()
print(leido)

 Y esto es todo.

Espero sinceramente, que este post ayude a alguien.

Mejorar continuamente es mejor que ser bueno

Uso de property en Python

logo python

Este post estará dedicado a otro decorador. Veremos el uso de property en Python, que bastante común para los desarrolladores.

Property nos permite trabajar con funciones como si fueran variables, y esta su magia dotándonos de una ventaja adicional al programar.

Como todo decorador, se escribe con la @ delante, o sea asi:

@property

Los decoradores classmethod y staticmethod

Veamos su uso en este ejemplo:

class boxeador(object):
    def __init__(self, color):
        self.color = color
    
    @property
    def esquina(self):
        print("Bienvenido, tu color es {}".format(self.color))
    
def main():
    a = boxeador('rojo')
    e = a.esquina
    
if __name__ == '__main__':
    main()

Output:

Bienvenido, tu color es rojo

Si eliminamos el decorador, no obtendríamos nada.

Y hasta aquí.

Espero que esto haya servido de ayuda a alguien.

Muchas gracias

Los hijos van al psicólogo a  pagar, para que le digan las mismas cosas que los padres llevan diciéndole años, gratis

Y

Listar un directorio en Python con walk() de forma recursiva.

logo python

En este articulo mostraré como listar un directorio en python con walk. En este link podrás ver también, como acceder a directorios con scandir

El método walk() pertenece al módulo os , y recibe como parámetro la ruta del contenido que recorreremos.

Como lo que hace el método es crear un iterador, que en cada iteración, devuelve tres valores: el nombre de la ruta completa del directorio, la lista de directorios que lo componen y la lista de ficheros de ese directorio.

El recorrido que hace el metodo por defecto es descendente, por lo que primero listará el contenido del directorio actual, y luego  ira descendiendo por nivel listando los directorios correspondientes.

 Cuando no se especifica la ruta,  walk() toma como referencia el directorio actual.

import os
dir = "/Users/blackmaster/Downloads/"

for nombre_directorio,carpetas,archivos in os.walk(dir):
    print('\n A')
    print(nombre_directorio)
    print('\n B')
    print(carpetas)
    print('\n C')
    print(archivos)

El resultado del script anterior irá devolviendo recursivamente, o sea por niveles los componentes de una ruta en este caso, separados por un salto de línea con los subtitulos A, B y C.

Te invito a que lo pruebes, para que lo comprendas mejor.

Si al método walk() le pasamos el argumento topdown=False:, mostrará  primero el contenido de los directorios más profundos.

Como por defecto, walk() no sigue los enlaces simbólicos que encuentra en un directorio, hay que pasar el argumento followlinks=True, para que lo haga.

import os
dir = "/Users/blackmaster/Downloads/"

for nombre_directorio,carpetas,archivos in os.walk(dir, topdown=False,followlinks=True):
    print('\n A')
    print(nombre_directorio)
    print('\n B')
    print(carpetas)
    print('\n C')
    print(archivos)

Y hasta aquí.

Espero modestamente, que este post ayude a alguien.

La clave para todo es la determinación

D.

Comparar fechas con Python

logo python

Una necesidad que puede surgir al programar, es tener que comparar fechas en Python.
Implementar las comparaciones no es algo complejo y para ello emplearemos operadores de comparación de uso común como <, >, <=, >=, !=  y otros, dentro del modulo datetime().

import datetime
  
# fecha in yyyy/mm/dd format
fecha_1 = datetime.datetime(2020, 4, 6)
fecha_2 = datetime.datetime(2019, 12, 30)
fecha_3 = datetime.datetime(2019, 1, 1) 

# la comparacion devolvera verdadero o falso

print("La fecha_1 es mas nueva que la fecha_3 : ", fecha_1 > fecha_3)
print("La fecha_2 es mas vieja que la fecha_3 : ", fecha_2 < fecha_3)
print("La fecha_3 es igual a la fecha_1 : ", fecha_3 == fecha_1)
print("La fecha_1 no es la misma que la fecha_2 : ", fecha_1 != fecha_2)

La salida que obtenemos es :
La fecha_1 es mas nueva que la fecha_3 :  True
La fecha_2 es mas vieja que la fecha_3 :  False
La fecha_3 es igual a la fecha_1 :  False
La fecha_1 no es la misma que la fecha_2 :  True

Sumar y restar días en Python

En este otro ejemplo comparamos varias fechas que entramos por teclado.​

# Entramos por teclado las fechas

dia_1, mes_1, año_1 = [int(x) for x in input("Introduzca fecha del primer envio"
        "(YYYY/MM/DD) : ").split('/')]
  
primera = date(dia_1, mes_1, año_1)
  

dia_2, mes_2, año_2 = [int(x) for x in input("Introduzca fecha del segundo envio"
        "(YYYY/MM/DD) : ").split('/')]
  
segunda = date(dia_2, mes_2, año_2)

dia_3, mes_3, año_3 = [int(x) for x in input("Introduzca fecha del tercer envio"
        "(YYYY/MM/DD) : ").split('/')]
  
tercera = date(dia_3, mes_3, año_3)
  
# Check the dates
if primera == segunda:
    print("Es raro que ambas se hicieran en mismo dia")
      
elif tercera > primera:
    print("es correcto")
      
else:
    print("Debe analizarse")

Y esto es todo, espero sinceramente que este post, sirva a alguien.

No discutas nunca con un imbécil, te llevará a su terreno y allí te ganará por experiencia

D.

Fusionar dos diccionarios en Python 3.5

logo python

Fusionar dos diccionarios en Python 3.5, es algo que puede resultar común en nuestra aplicación.

El procedimiento varia según la versión de Python que usemos, en nuestro caso es la 3.5 , siguiendo las indicaciones de las convenciones PEP 448

Lo que obtenemos es un nuevo diccionario t , con todos los valores, donde están sobreescritos los valores del segundo diccionario (b), por los del primero (a)

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

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

JArjona
Translate »