Manejar Entrada y Salida en Python

PythonBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá los conceptos fundamentales del manejo de entrada y salida (input/output) en Python. Exploraremos cómo mostrar información en la consola utilizando la función print() y cómo obtener la entrada del usuario desde el teclado.

Además, obtendrá experiencia práctica en la escritura de datos en archivos y en la lectura de datos desde ellos. Estas son habilidades esenciales para cualquier programa Python que necesite interactuar con usuarios o trabajar con datos almacenados en archivos.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Imprimir Cadenas en la Consola

En Python, la función principal para mostrar salida en la consola es print(). Su uso es sencillo. En este paso, practicará el uso de print() para mostrar texto.

Primero, localice el archivo output.py en el explorador de archivos en el lado izquierdo del WebIDE. Haga doble clic en él para abrirlo en el editor.

Agregue las siguientes líneas de código a output.py:

print("Hello, LabEx!")
print("This is a Python course.")

Guarde el archivo (puede usar el atajo Ctrl+S). Para ejecutar este script, abra la terminal en la parte inferior del WebIDE y ejecute el siguiente comando. La terminal ya debería estar en el directorio ~/project.

python ~/project/output.py

Verá la siguiente salida en la terminal:

Hello, LabEx!
This is a Python course.

La función print() también puede aceptar múltiples argumentos separados por comas. Por defecto, los imprime con un solo espacio intermedio.

Modifique el archivo output.py, reemplazando su contenido con la siguiente línea:

print("Apple", "Banana", "Orange", "Grape", "Watermelon")

Guarde el archivo y ejecútelo de nuevo desde la terminal:

python ~/project/output.py

La salida será:

Apple Banana Orange Grape Watermelon

Puede personalizar el separador utilizando el parámetro sep. El valor predeterminado para sep es un espacio (' '). Cambiémoslo a una barra vertical.

Modifique output.py una vez más:

print("Apple", "Banana", "Orange", "Grape", "Watermelon", sep=" | ")

Guarde y ejecute el script:

python ~/project/output.py

La salida ahora utiliza su separador personalizado:

Apple | Banana | Orange | Grape | Watermelon

Esto demuestra cómo puede controlar el formato de su salida en la consola.

Obtener Entrada del Usuario desde el Teclado

Hasta ahora, nuestros scripts solo han mostrado contenido predefinido. Para hacer los programas más interactivos, necesitamos obtener entrada del usuario. En Python, puede hacer esto con la función input().

Busque y abra el archivo interactive.py en el explorador de archivos del WebIDE. Agregue el siguiente código:

name = input("Please enter your name: ")
print("Your name is:", name)

La función input() muestra un mensaje (prompt) al usuario (la cadena que le pasa) y espera a que escriba algo y presione Enter. El texto introducido por el usuario se devuelve como una cadena (string), que almacenamos en la variable name.

Guarde el archivo y ejecute el script desde la terminal:

python ~/project/interactive.py

El script se detendrá y mostrará el mensaje. Escriba un nombre y presione Enter.

Please enter your name: Labex User
Your name is: Labex User

El script captura su entrada y la utiliza en la declaración print() final. Esta es una técnica fundamental para crear aplicaciones interactivas de línea de comandos.

Escribir Datos en un Archivo

Leer y escribir en archivos son operaciones de E/S (Entrada/Salida) comunes y esenciales. Python proporciona la función incorporada open() para manejar archivos.

La sintaxis básica es open(filename, mode). El argumento mode especifica cómo se utilizará el archivo. Los modos comunes incluyen:

  • 'w': Modo escritura (Write). Crea un nuevo archivo para escribir. Si el archivo ya existe, su contenido se borra.
  • 'r': Modo lectura (Read). Abre un archivo existente para leer. Este es el modo predeterminado.
  • 'a': Modo anexar (Append). Abre un archivo para añadir contenido al final del mismo. Si el archivo no existe, se crea.

La forma recomendada de trabajar con archivos es usando la declaración with, que cierra el archivo automáticamente, incluso si ocurren errores.

Practiquemos escribiendo algo de texto en un archivo. Abra el archivo file_io.py en el editor del WebIDE y agregue el siguiente código:

with open("book.txt", "w") as f:
    f.write("Bed before bright moonlight,\n")
    f.write("Suspected to be frost on the ground.\n")
    f.write("Head held high, gazing at the bright moon,\n")
    f.write("Head bowed low, thinking of my homeland.")

Este código abre un archivo llamado book.txt en modo escritura ('w'). El método f.write() escribe cadenas en el archivo. El carácter \n representa un salto de línea, por lo que cada llamada a write termina en una línea nueva.

Guarde el archivo y ejecute el script desde la terminal:

python ~/project/file_io.py

Este comando no producirá ninguna salida en la consola, pero creará un nuevo archivo llamado book.txt en su directorio ~/project. Puede ver su contenido usando el comando cat en la terminal:

cat ~/project/book.txt

La salida debe ser el texto que escribió en el archivo:

Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.

Usar la declaración with es una buena práctica porque asegura que el archivo se cierre correctamente después de que se ejecute el bloque de código.

Leer Datos de un Archivo

Ahora que hemos creado y escrito en book.txt, aprendamos cómo leer su contenido. Python ofrece varios métodos para leer archivos. Exploraremos los más comunes.

Continuaremos trabajando con el script file_io.py. Agregará código para leer el archivo que acaba de crear.

El Método read()

El método read() lee el contenido completo de un archivo y lo devuelve como una única cadena (string).

Agregue el siguiente código al final de su script file_io.py. Esto hará que el script primero escriba el archivo y luego lo lea e imprima su contenido.

## El código de escritura del paso anterior debe estar arriba de esto

print("\n--- Leyendo el archivo completo con read() ---")
with open("book.txt", "r") as f:
    content = f.read()
    print(content)

Guarde el archivo y ejecútelo desde la terminal:

python ~/project/file_io.py

La salida ahora incluirá el contenido de book.txt impreso en la consola:

--- Leyendo el archivo completo con read() ---
Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.

Iterar sobre Líneas

Una forma más eficiente en cuanto a memoria para leer un archivo, especialmente uno grande, es procesarlo línea por línea. Puede hacer esto iterando directamente sobre el objeto archivo en un bucle for.

Ahora, agregue este siguiente bloque de código a file_io.py:

print("\n--- Leyendo el archivo línea por línea ---")
with open("book.txt", "r") as f:
    for line in f:
        print(line, end='')

Aquí, end='' en la función print() evita que agregue un salto de línea adicional, ya que cada line leída del archivo ya termina con un carácter de nueva línea (\n).

Guarde y ejecute el script nuevamente:

python ~/project/file_io.py

La salida para esta sección será idéntica a la salida del método read(), pero el proceso subyacente es diferente, leyendo una línea a la vez.

El Método readlines()

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

Finalmente, agregue este último bloque de código a file_io.py:

print("\n\n--- Leyendo todas las líneas con readlines() ---")
with open("book.txt", "r") as f:
    all_lines = f.readlines()
    print(all_lines)

Guarde y ejecute el script por última vez:

python ~/project/file_io.py

La salida para esta sección será una lista de Python, donde cada elemento es una cadena que representa una línea del archivo:

--- Leyendo todas las líneas con readlines() ---
['Bed before bright moonlight,\n', 'Suspected to be frost on the ground.\n', 'Head held high, gazing at the bright moon,\n', 'Head bowed low, thinking of my homeland.']

Ahora ha practicado los métodos fundamentales tanto para escribir como para leer archivos en Python.

Resumen

En este laboratorio, ha aprendido las técnicas fundamentales para manejar la entrada y salida (I/O) en Python. Comenzó utilizando la función print() para mostrar texto formateado en la consola, incluyendo cómo personalizar los separadores. Luego pasó a hacer sus programas interactivos capturando la entrada del usuario desde el teclado con la función input().

Finalmente, exploró las operaciones de E/S de archivos. Aprendió a escribir datos en un archivo usando open() en modo escritura (write) con la declaración recomendada with. También practicó la lectura de datos desde un archivo utilizando varios métodos, incluyendo read(), la iteración línea por línea, y readlines(). Estas habilidades son fundamentales para construir aplicaciones Python más complejas que interactúan con usuarios y datos.