Advertisement
  1. Code
  2. Python

Alterando Vários Arquivos Usando Python

Scroll to top
Read Time: 3 min

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

Digamos que alguém familiarizado à ortografia britânica decidiu completar sua graduação nos EUA. Foi pedido que escrevesse um artigo sobre Python na aula. Ele é conhece bem Python e escreve o artigo sem problema. Ele falou sobre imagens em uma parte do artigo e escreveu mais de uma vez a palavra grey (britânica) ao invés de gray (americana), além de neighbourhood (britânica) ao invés de neighborhood (americana). Mas agora ele está nos EUA e precisa ver todas as versões britânicas das palavras e substituí-las pelas versões americanas.

Esse é um dos vários cenários onde precisamos alterar ortografias ou erros em vários lugares.

Nessa dica rápida, mostraremos um exemplo em que temos cinco arquivos de texto onde um nome foi escrito errado. Isso é, ao invés de Abder, Adber foi escrito. O exemplo mostrará como usar Python para corrigir a escrita do nome em todos os arquivos em um diretório.

Comecemos!

Preparação dos Dados

Antes de continuarmos, preparemos os dados (arquivos de texto) que trabalharemos. Continuemos e baixemos os arquivos. Extraiamos os arquivos e tudo estará pronto.

Como vemos, temos uma pasta chamada Abder com cinco arquivos diferentes chamados 1,2,3,4 e 5.

Implementação

Cheguemos à parte legal. A primeira coisa a fazer é ler o conteúdo do diretório Abder. Para isso, usamos o método listdir(), assim:

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

Se tentarmos ver o conteúdo do diretório, podemos fazer o seguinte:

1
print directory

E nesse caso, teremos:

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

Isso mostra que temos cinco arquivos rtf na pasta.

Para garantir que estamos na pasta atual (a que queremos), podemo usar chdir, assim:

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

A próxima coisa que precisamos fazer é iterar por todos os arquivos no diretório. Podemos usar um for-loop, assim:

1
for file in directory:

Como queremos ver os cinco arquivos e procurar por Adber, o que devemos fazer agora é abrí-los e ler seus conteúdos:

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

Agora vem um passo vital, especialmente ao falar sobre combinação de padrões, aqui, a busca por Adber: Esse passo é o uso das expressões regulares. Em Python, para usá-las, precisamos do módulo re.

Usaremos duas funções desse módulo. A primeira é compile():

Compila padrão de expressão regular em objeto de expressão regular, para ser usado numa pesquisa usando os métodos match() e search().

E o segundo é sub(), para substituir a forma errada pela correta. E faremos assim:

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

Por fim, queremos escrever o novo texto após a substituição de volta em nossos arquivos:

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

Juntando Tudo

Nessa seção, veremos como um script Python, onde procuramos por Adber em cada arquivo e substituímos por Abder, ficará:

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 vemos, Python facilita muito essas modificações em vários arquivos usando for-loop. Outra parte importante a lembrar aqui é o uso das expressões regulares para combinação de padrões.

Para saber mais sobre os laços Python, vejamos Um Lembre Suave sobre Laços em Python. E para mais informações sobre expressões regulares, vejamos Expressões Regulares em 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.