Entrada/Salida de Archivos en Python: Domina las Operaciones I/O
Este capítulo cubre todas las funciones básicas de I/O disponibles en Python. Para más funciones, consulta la documentación estándar de Python.
Imprimir en Pantalla
La forma más simple de producir salida es usar la sentencia print, donde puedes pasar cero o más expresiones separadas por comas. Esta función convierte las expresiones en una cadena y escribe el resultado en la salida estándar:
#!/usr/bin/python
print("Python is really a great language,", "isn't it?")
Resultado:
Python is really a great language, isn't it?
Lectura de Entrada por Teclado
Python proporciona dos funciones integradas para leer una línea de texto desde la entrada estándar (teclado por defecto):
- raw_input (Python 2)
- input
La Función raw_input (Python 2)
La función raw_input([prompt]) lee una línea de la entrada estándar y la retorna como cadena (eliminando el salto de línea final).
#!/usr/bin/python
str = raw_input("Enter your input: ")
print("Received input is :", str)
La Función input
La función input([prompt]) es equivalente a raw_input, pero asume que la entrada es una expresión Python válida y retorna el resultado evaluado.
#!/usr/bin/python
str = input("Enter your input: ")
print("Received input is :", str)
Si ingresas [x*5 for x in range(2,10,2)], el resultado será:
Received input is : [10, 20, 30, 40]
Apertura y Cierre de Archivos
Hasta ahora has leído y escrito en la entrada/salida estándar. Ahora veremos cómo usar archivos de datos reales. Python proporciona funciones y métodos básicos para manipular archivos mediante un objeto file.
La Función open
Antes de leer o escribir un archivo, debes abrirlo con la función integrada open(). Esta crea un objeto file para llamar a otros métodos asociados.
Sintaxis
file_object = open(file_name[, access_mode][, buffering])
Parámetros:
file_name: Cadena con el nombre del archivo a acceder.
access_mode: Modo de apertura (lectura, escritura, anexado, etc.). Por defecto es lectura (r).
buffering: Controla el almacenamiento en búfer (0 = sin búfer, 1 = búfer de línea, >1 = tamaño de búfer, negativo = predeterminado del sistema).
Modos de Apertura de Archivos
| Modo | Descripción |
|---|---|
| r | Abre para solo lectura. Puntero al inicio. Modo predeterminado. |
| rb | Abre para solo lectura en binario. Puntero al inicio. |
| r+ | Abre para lectura y escritura. Puntero al inicio. |
| rb+ | Abre para lectura y escritura en binario. Puntero al inicio. |
| w | Abre para solo escritura. Sobrescribe si existe; crea nuevo si no. |
| wb | Abre para solo escritura en binario. Sobrescribe si existe; crea nuevo si no. |
| w+ | Abre para lectura y escritura. Sobrescribe si existe; crea nuevo si no. |
| wb+ | Abre para lectura y escritura en binario. Sobrescribe si existe; crea nuevo si no. |
| a | Abre para anexar. Puntero al final si existe; crea nuevo si no. |
| ab | Abre para anexar en binario. Puntero al final si existe; crea nuevo si no. |
| a+ | Abre para anexar y lectura. Puntero al final si existe; crea nuevo si no. |
| ab+ | Abre para anexar y lectura en binario. Puntero al final si existe; crea nuevo si no. |
Atributos del Objeto file
Una vez abierto un archivo, puedes obtener información mediante sus atributos:
| Atributo | Descripción |
|---|---|
| file.closed | True si el archivo está cerrado, False en caso contrario. |
| file.mode | Modo de acceso con el que se abrió el archivo. |
| file.name | Nombre del archivo. |
| file.softspace | False si se requiere espacio explícito con print, True en caso contrario. |
Ejemplo
#!/usr/bin/python
fo = open("foo.txt", "wb")
print("Name of the file:", fo.name)
print("Closed or not:", fo.closed)
print("Opening mode:", fo.mode)
print("Softspace flag:", fo.softspace)
El Método close()
El método close() vacía cualquier información no escrita y cierra el objeto archivo. Es buena práctica usarlo explícitamente.
fileObject.close()
Lectura y Escritura de Archivos
El objeto file proporciona métodos para facilitar la manipulación de archivos.
El Método write()
Escribe cualquier cadena en un archivo abierto. No añade salto de línea automáticamente.
fileObject.write(string)
Ejemplo
#!/usr/bin/python
fo = open("foo.txt", "wb")
fo.write("Python is a great language.\nYeah its great!!\n")
fo.close()
El Método read()
Lee una cadena desde un archivo abierto. Puede leer datos binarios además de texto.
fileObject.read([count])
El parámetro count es el número de bytes a leer. Si se omite, intenta leer lo máximo posible.
Ejemplo
#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is:", str)
fo.close()
Resultado: Read String is: Python is
Posiciones en Archivos
El método tell() indica la posición actual en el archivo. El método seek(offset[, from]) cambia la posición actual.
- offset: Número de bytes a mover.
- from: Posición de referencia (0 = inicio, 1 = posición actual, 2 = final del archivo).
Ejemplo
#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is:", str)
position = fo.tell()
print("Current file position:", position)
fo.seek(0, 0)
str = fo.read(10)
print("Again read String is:", str)
fo.close()
Renombrar y Eliminar Archivos
El módulo os proporciona métodos para operaciones de procesamiento de archivos.
El Método rename()
Renombra un archivo. Sintaxis: os.rename(current_file_name, new_file_name)
Ejemplo
#!/usr/bin/python
import os
os.rename("test1.txt", "test2.txt")
El Método remove()
Elimina un archivo. Sintaxis: os.remove(file_name)
Ejemplo
#!/usr/bin/python
import os
os.remove("test2.txt")
Directorios en Python
El módulo os tiene métodos para crear, eliminar y cambiar directorios.
El Método mkdir()
Crea un directorio. Sintaxis: os.mkdir("newdir")
El Método chdir()
Cambia el directorio actual. Sintaxis: os.chdir("newdir")
El Método getcwd()
Muestra el directorio de trabajo actual. Sintaxis: os.getcwd()
El Método rmdir()
Elimina un directorio (debe estar vacío). Sintaxis: os.rmdir('dirname')
Métodos Relacionados con Archivos y Directorios
Métodos del Objeto File: Para manipular archivos.
Métodos del Objeto OS: Para procesar archivos y directorios.
python
- ¿Qué es una Lima de Banco? Guía Completa de la Herramienta Esencial para Madera y Metal
- Dominando la entrada/salida en C: scanf() y printf() explicados
- Manejo de archivos en C: Dominando E/S con fopen, fprintf, fread y fseek
- Dominando E/S de archivos en C: Crear, abrir y gestionar archivos
- Entendiendo los Archivos de Cabecera en C: Tipos, Uso y Buenas Prácticas
- Dominando Entrada/Salida de Archivos en C++: Lectura y Escritura con fstream
- Entrada/Salida de archivos en C#: Lectura, escritura y gestión de streams
- Dominando E/S e importación de módulos en Python: Guía práctica
- Entrada/Salida de Archivos en Python: Dominando Operaciones de Lectura, Escritura y Gestión
- Dominando Operaciones de Directorios y Archivos en Python
- Comprobación de existencia de archivos y directorios en Python – Guía práctica