Buscar

Aula 8 - Programação Rad - DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES EM PYTHON

Prévia do material em texto

27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 1/16
Programação RAD
Aula 8: Manipulação de dados em Python
INTRODUÇÃO
A recuperação da informação sempre foi um assunto interessante na computação. Gravar e ler arquivos de vários
formatos são os princípios dos bancos de dados atuais e representam operações muito relevantes em várias
aplicações. 
Nesta aula, estudaremos um pouco mais as strings – tema importante na linguagem Python. A�nal, diversas
aplicações relacionadas à ciência de dados, à genética, à bioinformática e a outras tão usadas nessa linguagem
baseiam-se, fundamentalmente, em strings e em arquivos-texto. Aqui, exploraremos esses dois assuntos.
OBJETIVOS
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 2/16
Criar programas em Python a partir do uso de arquivos.
Manipular strings nessa linguagem.
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 3/16
Leitura e escrita de arquivos-texto
Basicamente, ler e escrever arquivos signi�ca trabalhar com strings, armazená-las e recuperá-las. Em outras linguagens
de programação, é comum usar os métodos (ou as funções) open e write para realizar esses processos. 
Em Python, não é diferente: empregamos os mesmos comandos, e a forma de trabalhar com eles é bem semelhante,
com apenas algumas particularidades que vamos apresentar aqui. 
Como você já sabe, os arquivos são objetos nessa linguagem. Com base nisso, manipulamos atributos e métodos.
Atenção
, 
Para o pleno aproveitamento desta aula, baixe este arquivo-texto (https://www.w3schools.com/js/ajax_info.txt). É bem pequeno e
simples, mas su�ciente para realizarmos nossos exemplos. Você pode salvá-lo em qualquer lugar de seu computador, mas
guarde bem seu caminho, pois vamos precisar dessa informação daqui a pouco.
ABERTURA DE ARQUIVOS
Para abrir um arquivo, usamos o comando open(), que recebe dois argumentos:
Nome do arquivo
Modo de leitura
Vamos aprender a fazer isso por meio de exemplos. 
Para começar, suponha que o arquivo esteja na raiz do drive C de seu computador. Se você estiver usando Linux ou
MacOs, salve o arquivo no diretório de seu usuário. 
Observe:
>>> a =
open('c:\\Users\\Fabiano\\ajax_info','w')
>>> a
https://www.w3schools.com/js/ajax_info.txt
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 4/16
<_io.TextIOWrapper
name='c:\\Users\\Fabiano\\ajax_info.txt'
mode='w' encoding='cp1252'>
Se o arquivo está no drive C:\, por que existem duas barras (c:\\)?
É simples: porque, em algumas linguagens, a barra invertida (“\”) é usada para sequências de escape. Quando
colocamos duas barras invertidas, a linguagem Python entende que estamos, de fato, querendo usar somente uma
barra.
Assim como em outras linguagens de programação, o primeiro argumento do método open() especi�ca o arquivo que
será aberto. Nesse argumento, precisamos informar o path (caminho) completo do arquivo.
Voltando ao exemplo, o arquivo “arquivo.txt” foi aberto para escrita e atribuído à variável “a”. Entre os modos usados
para ler e escrever em arquivos, destacamos:
e
Abre o arquivo apenas para leitura (read). Você não pode inserir ou modificar o conteúdo.
w
Abre o arquivo apenas para escrita. O arquivo que existia será sobrescrito pelo atual.
a – append
Abre o arquivo para inserção de dados que serão escritos no final do arquivo.
r
Abre o arquivo para leitura e escrita. 
Ao abrir o arquivo com o open(), você pode omitir o modo. Nesse caso, o padrão será o modo “r”.
Atenção
, 
Sempre que você usar o método open() para abrir um arquivo, já escreva uma linha em seguida para não se esquecer de fechá-lo.
Embora o computador tenha bastante memória, e o coletor de lixo do sistema operacional apague logo o arquivo, essa é uma boa
prática.
Vamos retomar nosso arquivo já aberto. Agora, podemos manipulá-lo para várias �nalidades. A seguir, apresentamos
alguns métodos:
+
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 5/16
Iterar em um arquivo
Em muitas situações, precisamos percorrer o arquivo aberto linha a linha. Isso é chamado
de iteração. Para isso, usamos o comando for como de costume. Veja o exemplo abaixo:
>>> for linha in a:
 print(linha)
<h1>AJAX</h1>
<p>AJAX is not a programming language.</p>
<p>AJAX is a technique for accessing web
servers from a web page.</p>
<p>AJAX stands for Asynchronous JavaScript
And XML.</p>
Aqui, apenas mostramos a linha na tela. Em programas reais, a linha recuperada pode ser
processada de várias formas. 
Lembra-se dos exercícios relacionados com genética da aula anterior? Poderíamos, por
exemplo, calcular a quantidade de bases do DNA em cada linha.
Ler todas as linhas de um arquivo
A linguagem Python é muito usada em aplicações relacionadas à ciência de dados por
inúmeros motivos – entre eles lidar muito bem com arquivos e strings. 
Em diversas situações, quando o arquivo não é muito grande, podemos carregar todo o
conteúdo em uma única variável string.
>>> conteudo = a.read()
>>> conteudo
<h1>AJAX</h1>
<p>AJAX is not a programming language.</p>
<p>AJAX is a technique for accessing web
servers from a web page.</p>
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 6/16
<p>AJAX stands for Asynchronous JavaScript
And XML.</p>
Todo o conteúdo do arquivo foi transformado em uma única string e atribuído à variável
“conteúdo”.
Ler todas as linhas em uma lista
Em outras situações, é melhor ler o conteúdo em listas. Nesse caso, o método a ser usado é
o readlines().
>>> a =
open("c:\\users\\fabiano\\ajax_info.txt")
>>> lista = a.readlines()
>>> lista
['<h1>AJAX<h1>\n', '<p>AJAX is not a
programming language.</p>\n', '<p>AJAX is
a technique for accessing web servers from
a web page.</p>\n', '<p>AJAX stands for
Asynchronous JavaScript And XML.</p>']
Observe que todo o conteúdo do arquivo será inserido em uma lista. Após fazer isso, os
métodos de procura – como aqueles apresentados nas aulas anteriores – podem ser
usados para buscar um valor especí�co ou outro tipo de processamento.
Ler o arquivo linha por linha
Este é um método bastante utilizado. Muitas vezes, precisamos processar o arquivo linha
por linha em vários tipos de aplicações para: 
• Transformar os caracteres em maiúsculos;
• Procurar valores em outro arquivo baseado no conteúdo da linha;
• Carregar um aplicativo etc.
Para fazer essa leitura minuciosa, usamos o método readline().
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 7/16
>>> a =
open("c:\\users\\fabiano\\ajax_info.txt")
>>> lin1 = a.readline()
>>> lin2 = a.readline()
>>> lin3 = a.readline()
>>> lin1
'<h1>AJAX</h1>\n'
>>> lin2
'<p>AJAX is not a programming language.
</p>\n'
>>> lin3
'<p>AJAX is a technique for accessing web
servers from a web page.</p>\n'
Quando abrimos um arquivo, existe um “ponteiro” que aponta para a posição atual de leitura. 
Suponha que você acabou de abrir o arquivo com o open(). Nesse momento, o ponteiro
estará �xado na posição inicial do arquivo. 
Com o uso do readline(), o ponteiro vai ler a primeira linha e apontar para a próxima. Em
outras palavras, a cada readline(), o ponteiro vai avançar até a posição �nal do arquivo. 
Normalmente, empregamos o readline() associado a um comando de repetição para
percorrer o arquivo todo.
Criar um arquivo vazio
Apesar de ser traduzido como “abrir”, o método open() pode ser usado para abrir ou criar um
arquivo vazio. Para isso, passamos como parâmetro o modo “w”.
>>> b =
open("c:\\users\\fabiano\\novoarquivo.txt","w")
Veri�que na pasta de seu computador que, agora, há um novo arquivo com o tamanho 0 kb
(vazio).
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/18/16
Apagar o conteúdo de um arquivo
Às vezes, o método open() pode ser perigoso. 
Quando executamos o comando do exemplo anterior, se houvesse um arquivo com o
mesmo nome que passamos por parâmetro, o arquivo seria apagado e se criaria um novo
sobre o antigo, deletando seu conteúdo. Portanto, use esse método com cuidado.
Escrever em um arquivo-texto
A leitura de dados é feita usando o read(). Para escrever em um arquivo-texto, empregamos
o método write().
>>> b =
open("c:\\users\\fabiano\\novoarquivo.txt","w")
>>> b.write("Ouviram do Ipiranga as margens
plácidas")
39
>>> c =
open("c:\\users\\fabiano\\novoarquivo.txt","r")
>>> for linha in c:
 print(linha)
Ouviram do Ipiranga as margens plácidas
Adicionar mais conteúdo ao arquivo existente
Normalmente, abrimos o arquivo na primeira linha.
>>> a =
open("c:\\users\\fabiano\\ajax_info.txt")
>>> dados = a.readlines()
>>> dados
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 9/16
['<h1>AJAX</h1>\n', '<p>AJAX is not a
programming language.</p>\n', '<p>AJAX is a
technique for accessing web servers from a
web page.</p>\n', '<p>AJAX stands for
Asynchronous JavaScript And XML.</p>']
>>> dados.append("<p>Nova linha
inserida</p>")
>>> a =
open("c:\\users\\fabiano\\ajax_info.txt","w")
>>> a.writelines(dados)
Observe que não passamos o parâmetro do modo. Logo, a linguagem Python assume que é
o modo “r”. Atribuímos os dados do arquivo à lista dados. 
Em seguida, inserimos uma nova linha no arquivo. Abrimos o arquivo em modo de escrita e
usamos o método writelines() contendo os dados antes armazenados.
O método writelines() é diferente do write() porque aceita uma lista de strings, enquanto o
write aceita uma string apenas. 
Agora que vimos os arquivos, vamos passar para as strings.
STRINGS
Em qualquer linguagem de programação, as strings são importantes. Até mesmo em Java, em que não são um tipo
primitivo, certamente, você encontrará vasta documentação a respeito. 
Aqui, vamos mostrar algumas operações básicas envolvendo strings em Python. Nessa linguagem, tudo é objeto –
inclusive a strings, que deriva da classe str. 
A seguir, veremos algumas funções relacionadas às strings:
     
Acessar os caracteres da string por seu índice
Assim como em outras linguagens, em Python, as strings são arrays de caracteres. Portanto, é possível acessá-los
isoladamente por seu índice.
>>> str1 = "Nabucodonosor"
>>> str1
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 10/16
'Nabucodonosor'
[>>> str1[0]]
'N'
>>> str1[1]
'a'
>>> str[20]
Traceback (most recent call last):
File "<pyshell#21p>", line 1, in <module>
 str[20]
TypeError: 'type' object is not subscriptable
Mas há um detalhe importante: as strings são imutáveis quanto à alteração por índice. Não é possível fazer a seguinte
tentativa:
>>> str1[0]="F"
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
 [str1[0]="F"]
TypeError: 'str' object does not support item
assignment
Observe que o código apresenta uma mensagem de erro.
Atenção
, 
Sempre leia as mensagens de erro geradas pela linguagem Python, que mostram a posição exata do problema e podem ajudá-lo
muito na construção dos programas.
     
Iterar em strings
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 11/16
Assim como um array ou uma lista, podemos iterar na string com o comando for:
>>> for i in str1:
 print(i)
N
a
b
u
c
o
d
o
n
o
s
o
r
Você também pode fatiar (slice) a string:
>>> str1[0:5]
'Nabuc'
>>> str1[:5]
['Nabuc']
>>> str1[5:]
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 12/16
'odonosor'
>>> str1[-1]
'r'
>>> str1[:]
'Nabucodonosor'
     
Veri�car se um caractere está na string
>>> 'f' in str1
False
>>> 'n' in str1
True
     
Identi�car o tamanho da string
>>> len(str1)
13
     
Converter a string para maiúsculas ou minúsculas
>>> str1.upper()
'NABUCODONOSOR'
>>> str1.lower()
'nabucodonosor'
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 13/16
     
Converter um número para uma string
>>> x = 666
>>> type(x)
<class 'int'>
>>> x1 = str(x)
>>> type(x1)
<class 'str'>
     
Veri�car se a string contém caracteres não alfabéticos
>>> str1.isalpha()
True
>>> str1="Nabucodonosor123"
>>> str1.isalpha()
False
     
Retirar espaços em branco no início e no �m da string
Este método é muito útil, mas não modi�ca o conteúdo da string:
>>> str2 = " Nabucodonosor "
>>> str2
' Nabucodonosor '
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 14/16
>>> str2.strip()
'Nabucodonosor'
     
Juntar cada item da string por meio de um delimitador especi�cado
Assim como o strip(), o método não vai alterar a string:
>>> str2
'Nabucodonosor'
>>> "-".join(str2)
'N-a-b-u-c-o-d-o-n-o-s-o-r'
Existem muitas outras formas de formatar e manipular as strings, bem como de tratar seus caracteres conjunta ou
isoladamente. A ideia, aqui, é que você possa, basicamente, usá-las em seus programas e realizar essas tarefas. 
Mas não deixe de estudar, pesquisar e explorar as possibilidades.
EXERCÍCIOS
Analise a seguinte string: 
str = “ Aquarela do Brasil “ 
Observe que há espaços no início e no �m. Como você faria para retirar, de�nitivamente, os espaços em branco da
string str?
Resposta Correta
Assinale a opção CORRETA:
a) Quando abrimos um arquivo para leitura, se não existe, ocorre erro.
b) Quando abrimos um arquivo para leitura, se não existe, um novo é criado.
c) Quando abrimos um arquivo para escrita, se existe, é sobrescrito com o novo.
d) Todas as a�rmações anteriores procedem.
e) N.R.A.
Justi�cativa
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 15/16
Para ler apenas dois caracteres de um objeto do tipo arquivo (arq), usamos:
a) arq.read(2)
b) arq.read()
c) arq.readline()
d) arq.readlines
e) arq.open(2)
Justi�cativa
O método center() centraliza strings em uma sequência de determinada largura. Baseando-se nessa explicação e em
nosso breve estudo a respeito do assunto, analise o código a seguir: 
str='python' 
print (str.center(15,'*')) 
O que será impresso?
a) ********python*******
b) ****python*****
c) *****python****
d) ********python*******
e) N.R.A.
Justi�cativa
Analise o código a seguir e observe a aplicação do método count(): 
str='abababadaadbbaccabc' 
print (str.count('ab',-17,-1)) 
O que será impresso?
a) 4
b) 2
c)3
d) 5
e) 6
Justi�cativa
27/06/2022 12:33 Disciplina Portal
https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 16/16
Glossário

Continue navegando