Entrada/Salida y Archivos

Manejo de Archivos

El manejo de archivos es una parte fundamental de la programación en Python. Permite a los programas leer y escribir datos en archivos en el sistema de archivos. A continuación, veremos cómo abrir, leer y escribir archivos en Python.

Código de Ejemplo

				
					# Apertura de un archivo
archivo = open("archivo_ejemplo.txt", "w")  # Abrir en modo escritura

# Escritura en el archivo
archivo.write("Hola, Mundo!\n")
archivo.write("Este es un archivo de ejemplo.\n")

# Cerrar el archivo
archivo.close()

# Apertura del archivo en modo lectura
archivo = open("archivo_ejemplo.txt", "r")

# Lectura del archivo completo
contenido_completo = archivo.read()
print("Contenido completo del archivo:")
print(contenido_completo)

# Cerrar el archivo
archivo.close()

# Escritura y lectura usando with
with open("archivo_ejemplo.txt", "a") as archivo:  # Abrir en modo append
    archivo.write("Añadiendo una nueva línea.\n")

with open("archivo_ejemplo.txt", "r") as archivo:
    # Lectura línea por línea
    print("Lectura línea por línea:")
    for linea in archivo:
        print(linea, end="")

# Lectura de líneas en una lista
with open("archivo_ejemplo.txt", "r") as archivo:
    lineas = archivo.readlines()
    print("\n\nLíneas del archivo como lista:")
    print(lineas)

# Escritura en un archivo nuevo
with open("nuevo_archivo.txt", "w") as nuevo_archivo:
    nuevo_archivo.write("Este es un nuevo archivo.\n")
    nuevo_archivo.write("Tiene varias líneas.\n")
    nuevo_archivo.write("Fin del archivo.\n")

# Lectura del nuevo archivo
with open("nuevo_archivo.txt", "r") as nuevo_archivo:
    contenido = nuevo_archivo.read()
    print("\nContenido del nuevo archivo:")
    print(contenido)

				
			

Explicación

Apertura de un Archivo

Para trabajar con archivos en Python, primero debes abrir el archivo utilizando la función open(), que acepta dos argumentos: el nombre del archivo y el modo en que deseas abrirlo.

Modos de apertura comunes:

  • "r": Modo lectura. Abre el archivo para leerlo. El archivo debe existir.
  • "w": Modo escritura. Crea un archivo nuevo o sobrescribe uno existente.
  • "a": Modo append. Abre el archivo para agregar contenido al final del archivo. Si el archivo no existe, se crea.
  • "b": Modo binario. Utilizado para leer y escribir archivos binarios.

Escritura en el Archivo

Puedes escribir en un archivo utilizando el método write(). Recuerda cerrar el archivo después de escribir para asegurarte de que todos los datos se guarden correctamente.

  • archivo.write("Hola, Mundo!\n"): Escribe una línea en el archivo.

Lectura del Archivo

Puedes leer el contenido de un archivo utilizando el método read(). Esto leerá todo el contenido del archivo en una sola operación. También puedes leer el archivo línea por línea utilizando un bucle for.

  • contenido_completo = archivo.read(): Lee todo el contenido del archivo.
  • for linea in archivo: Lee el archivo línea por línea.

Uso de with para Manejar Archivos

El uso de with es una forma más segura de trabajar con archivos porque asegura que el archivo se cierre automáticamente después de que el bloque de código se haya ejecutado, incluso si se produce una excepción.

  • with open("archivo_ejemplo.txt", "r") as archivo: Abre el archivo en modo lectura y garantiza que se cierre al final del bloque with.

Lectura de Líneas en una Lista

El método readlines() lee todas las líneas de un archivo y las devuelve como una lista de cadenas.

  • lineas = archivo.readlines(): Lee todas las líneas del archivo y las almacena en una lista.

Escritura en un Nuevo Archivo

Puedes crear y escribir en un archivo nuevo utilizando open() con el modo "w". Si el archivo ya existe, se sobrescribirá.

  • with open("nuevo_archivo.txt", "w") as nuevo_archivo: Crea un nuevo archivo y escribe en él.

Resumen

  • Apertura de Archivos: Utiliza open() con el nombre del archivo y el modo de apertura.
  • Escritura en Archivos: Utiliza write() para escribir datos en un archivo. No olvides cerrar el archivo después de escribir.
  • Lectura de Archivos: Utiliza read() para leer todo el contenido de un archivo o for linea in archivo para leer línea por línea.
  • Uso de with: Utiliza with open() para manejar archivos de manera segura y asegurarte de que se cierren correctamente.
  • Lectura de Líneas en una Lista: Utiliza readlines() para leer todas las líneas del archivo en una lista.
  • Escritura en un Nuevo Archivo: Utiliza open() con el modo "w" para crear y escribir en un nuevo archivo.

Entrada del usuario y salida

En Python, puedes interactuar con el usuario mediante la entrada y salida estándar. La entrada se obtiene a través de la función input(), y la salida se muestra utilizando la función print().

Código de Ejemplo

				
					# Entrada del usuario
nombre = input("Por favor, introduce tu nombre: ")
edad = input("Por favor, introduce tu edad: ")

# La función input() devuelve una cadena, así que si necesitas un número, debes convertirlo
edad = int(edad)

# Salida
print(f"Hola, {nombre}. Tienes {edad} años.")

# Realizar cálculos con la entrada del usuario
anios_hasta_retiro = 65 - edad
print(f"Te quedan {anios_hasta_retiro} años para jubilarte.")

# Entrada y conversión de diferentes tipos de datos
altura = float(input("Por favor, introduce tu altura en metros: "))
print(f"Tu altura es {altura} metros.")

# Formateo de la salida
# Formateo con f-strings (a partir de Python 3.6)
print(f"Nombre: {nombre}, Edad: {edad}, Altura: {altura:.2f} metros")

# Formateo con el método format()
print("Nombre: {}, Edad: {}, Altura: {:.2f} metros".format(nombre, edad, altura))

# Formateo con el operador %
print("Nombre: %s, Edad: %d, Altura: %.2f metros" % (nombre, edad, altura))

				
			

Explicación

Entrada del Usuario

La función input() se utiliza para obtener la entrada del usuario. Esta función siempre devuelve una cadena de texto, por lo que si se necesita otro tipo de dato (como un entero o un flotante), es necesario convertir la cadena utilizando las funciones de conversión correspondientes (int(), float(), etc.).

  • nombre = input("Por favor, introduce tu nombre: "): Muestra un mensaje al usuario y guarda la entrada como una cadena en la variable nombre.
  • edad = int(input("Por favor, introduce tu edad: ")): Muestra un mensaje al usuario, guarda la entrada como una cadena y luego la convierte a un entero utilizando int().

Salida

La función print() se utiliza para mostrar mensajes en la pantalla. Puede aceptar múltiples argumentos y los imprime con un espacio entre ellos. También permite el formateo de cadenas para mostrar valores variables de manera más legible.

  • print(f"Hola, {nombre}. Tienes {edad} años."): Utiliza una f-string para formatear la salida, disponible a partir de Python 3.6.
  • print("Hola,", nombre, ". Tienes", edad, "años."): Muestra la salida utilizando múltiples argumentos.

Realizar Cálculos con la Entrada del Usuario

Una vez convertida la entrada del usuario a un tipo de dato adecuado, se pueden realizar cálculos con ella.

  • anios_hasta_retiro = 65 - edad: Calcula los años restantes hasta la jubilación.
  • print(f"Te quedan {anios_hasta_retiro} años para jubilarte."): Muestra el resultado del cálculo.

Conversión de Tipos de Datos

Es importante convertir la entrada del usuario al tipo de dato correcto antes de realizar cualquier operación con ella.

  • altura = float(input("Por favor, introduce tu altura en metros: ")): Convierte la entrada del usuario a un número flotante.

Formateo de la Salida

Existen varias formas de formatear cadenas en Python para incluir variables de manera legible:

  • F-strings (a partir de Python 3.6): Utilizan el prefijo f y las llaves {} para incluir variables directamente en la cadena.

    • print(f"Nombre: {nombre}, Edad: {edad}, Altura: {altura:.2f} metros"): Muestra la altura con dos decimales.
  • Método format(): Utiliza llaves {} como marcadores de posición y el método format() para insertar variables.

    • print("Nombre: {}, Edad: {}, Altura: {:.2f} metros".format(nombre, edad, altura)): Muestra la altura con dos decimales.
  • Operador %: Utiliza el operador % para incluir variables en la cadena.

    • print("Nombre: %s, Edad: %d, Altura: %.2f metros" % (nombre, edad, altura)): Muestra la altura con dos decimales.

Resumen

  • Entrada del Usuario: Utiliza input() para obtener la entrada del usuario y convierte el tipo de dato si es necesario.
  • Salida: Utiliza print() para mostrar mensajes en la pantalla.
  • Realizar Cálculos: Convierte la entrada a tipos de datos adecuados para realizar cálculos.
  • Formateo de la Salida: Utiliza f-strings, el método format() o el operador % para formatear las cadenas de manera legible.