Advertisement
  1. Code
  2. Python

Cómo hacer cambios en archivos múltiples utilizando Python

Scroll to top
Read Time: 3 min

() translation by (you can also view the original English article)

Supongamos que alguien está familiarizado con la ortografía británica y ha decidido completar su título en los Estados Unidos. Se le ha solicitado que escriba un artículo sobre Python para la clase. Es muy versado en Python y no tiene problemas para escribirlo. En una parte de su artículo habla sobre las imágenes y ha escrito más de una vez la palabra grey (ortografía británica) en lugar de gray (ortografía estadounidense), además de neighbourhood (ortografía británica) en lugar de neighborhood (ortografía estadounidense). Pero ahora está en los Estados Unidos y tiene que revisar todas las palabras escritas en estilo británico y reemplazarlas con la ortografía estadounidense.

Este es uno de los muchos escenarios en los que necesitamos cambiar la ortografía o ciertos errores en múltiples ubicaciones.

En este consejo breve, te mostraré un ejemplo con cinco archivos de texto donde mi nombre está mal escrito. Es decir, en lugar de Abder, está escrito Adber. El ejemplo te mostrará cómo podemos utilizar Python para corregir la ortografía de mi nombre en todos los archivos de texto incluidos en un directorio.

¡Empecemos!

Preparación de los datos

Antes de seguir adelante con el ejemplo, vamos a preparar los datos (archivos de texto) con los que queremos trabajar. Descarga el directorio con sus archivos. Descomprime el directorio y todo está listo.

Como puedes ver, tenemos un directorio llamado Abder que contiene cinco archivos diferentes llamados 1,2,3,4 and 5.

Implementación

Vayamos a la parte divertida. Lo primero que tenemos que hacer es leer el contenido del directorio Abder. Para ello, podemos utilizar el método listdir(), del modo siguiente:

1
import os
2
directory = os.listdir('/Users/DrAbder/Desktop/Abder')

Si tratamos de ver lo que hay dentro del directorio, podemos hacer lo siguiente:

1
print directory

En este caso, obtendremos:

1
['.DS_Store', '1.rtf', '2.rtf', '3.rtf', '4.rtf', '5.rtf']

Esto muestra que tenemos cinco archivos rft dentro del directorio.

Para asegurarnos de que estamos trabajando con el directorio actual (directorio de interés), podemos utilizar chdir de la siguiente manera:

1
os.chdir('/Users/DrAbder/Desktop/Abder')

Lo siguiente que tenemos que hacer es crear un bucle con todos los archivos del directorio Abder. Podemos usar for-loop del modo siguiente:

1
for file in directory:

Puesto que queremos buscar en cada uno de los cinco archivos del directorio y buscar Adber, lo normal en esta etapa es abrir y leer el contenido de cada archivo:

1
open_file = open(file,'r')
2
read_file = open_file.read()

Ahora viene un paso vital, especialmente cuando se habla de coincidencia de patrones, en nuestro caso, la búsqueda de Adber. Este paso es el uso de expresiones regulares. En Python, para usar expresiones regulares, utilizaremos el módulo re.

Usaremos dos funciones principales de este módulo. El primero es compile():

Compila un patrón de expresión regular en un objeto de expresión regular, que puede ser usado para las coincidencias utilizando sus métodos match() y search().

Y el segundo es sub(), para reemplazar la ortografía incorrecta por la correcta. Por tanto, haremos lo siguiente:

1
regex = re.compile('Adber')
2
read_file = regex.sub('Abder', read_file)

Por último, queremos escribir el nuevo texto después de la sustitución en nuestros archivos, del modo siguiente:

1
write_file = open(file,'w')
2
write_file.write(read_file)

Poniendo todo junto

En esta sección, veamos el aspecto que tendrá todo el script de Python, que buscará Adber en cada archivo y lo reemplazará con Abder:

1
import os, re
2
3
directory = os.listdir('/Users/DrAbder/Desktop/Abder')
4
os.chdir('/Users/DrAbder/Desktop/Abder')
5
6
for file in directory:
7
    open_file = open(file,'r')
8
    read_file = open_file.read()
9
    regex = re.compile('Adber')
10
    read_file = regex.sub('Abder', read_file)
11
    write_file = open(file,'w')
12
    write_file.write(read_file)

Como podemos ver, Python hace que sea muy fácil realizar modificaciones en archivos múltiples utilizando for-loop. Otra parte importante que hay que recordar aquí es el uso de expresiones regulares para la coincidencia de patrones.

Si quieres conocer más acerca de los bucles de Python, consulta: Un suave repaso sobre los bucles de Python. Y, para obtener más información acerca de las expresiones regulares, revisa: Expresiones regulares en Python.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.