Fundamentos de
Programação
Prof.ª Carol Melo
Objetivo da Aula
✔ Manipulação de Arquivo;
✔ Parte Prática.
Professora: Turma A
E-mail: accm4@cesar.school
Slack: @Carol Melo Código da Turma
Tutor: p2s7kbe
E-mail: mvt@cesar.school
Slack: @Mateus Valgueiro
Turma B
Monitores: Código da Turma
Slack: Ana Beatriz (81) 99286-7651
s4i24lu
Slack: André Luiz (81) 99124-8016
Slack: Arthur Padilha (81) 99124-8016
Slack: Gabriel Chaves (81) 99789-0110
Slack: Henrique Cordeiro (81) 98759-4540
Avisos
Monitorias:
Monitoria Turma A: Quarta-feira às 15h na sala 05 do BRUM com Henrique
Cordeiro, Ana Alves e Gabriel Chaves;
Monitoria Turma B: Segunda-feira às 15h na sala 05 do BRUM com Arthur
Padilha e André Luiz;
Você pode participar da monitoria da outra turma.
Cronograma
18/05: Aula de Arquivo
23/05: Tratamento de Exceção e Lista de Exercícios 07
25/05: Apresentação dos Trabalhos
30/05: Prova
Tipo de Arquivos
1. Texto simples
a. Alfanumérico
b. Formatado em linhas
c. Cada linha termina com um EOL (End of Line) normalmente “\n”
d. Ex: .txt .csv .xml
2. Binários
a. Arquivos que não são texto plano
b. Apenas programas que sabem a sua estrutura conseguem processá-los
c. Ex: .xlsx .pdf .jpg .png
Processamento de Arquivos
1. Open - Abrir
a. O primeiro passo é abrir um arquivo, abrir pode significar criar.
2. Read/Write - Ler/Escrever
a. O segundo passo é fazer a operação que se quer fazer, ler ou
escrever.
3. Closed - Fechar
a. Lembre-se sempre de fechar o arquivo, um arquivo não fechado pode
se tornar inacessível por outro programa ou usuário e em alguns
casos extremos, (desligamento do computador) pode tornar o
arquivo corrompido.
Abertura de Arquivos
Modo de abertura de arquivos: um arquivo pode ser aberto com
um dos seguintes modos:
• r: apenas leitura (opção padrão);
• r+: leitura e escrita;
• w: apenas escrita. Se não existir, cria arquivo vazio.
Se existir, conteúdo original é descartado;
• a: acréscimo (append). Apenas escrita. Grava a partir do fim.
Se não existir, cria arquivo vazio.
Cursor de arquivo (Pointer)
•Toda vez que um arquivo é aberto o python coloca um cursor em
alguma posição do arquivo , dependendo do modo de abertura.
Ex: no modo de append ("a") o cursor é posicionado no final do
arquivo
•Após leituras e escritas, o cursor se move dentro do arquivo
Cursor de arquivo (Pointer)
Cursor de arquivo (Pointer)
•Métodos para ler e manipular cursores de arquivos:
○ .tell(): retorna a posição atual do cursor, em número de
bytes
○ .seek(offset, whence = 0):
■ Offset : a quantidade de bytes que o cursor deve andar
■ Whence: Define a partir de onde o offset vai ser
contado. Pode ser do começo do arquivo (default), da
posição atual ou relativo ao final do arquivo.
Escrita de Arquivos
● Para escrever em um arquivo de texto, este precisa ser aberto para escrita:
○ manipulador = open('arquivo.txt', 'w')
● Se não houver um arquivo arquivo.txt no diretório de trabalho ativo, a
função open() o criará.
● Se o arquivo arquivo.txt já existir, seu conteúdo será apagado.
● Nos dois casos, o cursor apontará para o início do arquivo (vazio).
● Se quiséssemos acrescentar mais conteúdo ao arquivo (existente),
usaríamos o modo 'a' no lugar de 'w'.
Escrita de Arquivos
Para realizar a escrita em arquivos, vamos utilizar:
• write(): grava uma string no arquivo por vez.
•writelines(): recebe um objeto iterável (seja uma lista, uma tupla,
um dicionário, etc). Com este método, várias linhas poderão ser inseridas no
arquivo de uma vez.
Exemplo 1 – Write()
Não precisa criar o arquivo .txt antes, usando o comando "w" ao executar o
código, o python gera automaticamente.
Exemplo 2 – Write()
Arquivo e função.
Exemplo 3 – Write()
Ao utilizar o comando "a" estamos adicionando novas informações ao
arquivo, sem excluir as anteriores. Funciona semelhante ao append.
Exemplo 4 – Writelines()
Adicionando uma lista de valores.
Vamos Praticar?
Desenvolva uma função na qual tenha como parâmetro a quantidade de
pessoas que serão cadastradas no arquivo “dados.csv”, o qual deverá ser
aberto na função para escrita. Cadastre o nome e o sobrenome das pessoas.
Além disso, no programa principal exiba todos os dados na tela, e
separadamente, todas as pessoas que possuem “Santos” como um dos seus
nomes.
Questão 2540 do Beecrowd - Impeachment
“A entrada termina com fim-de-arquivo (EOF)”
Duas possíveis resoluções:
1) Gerando uma exceção 2) usando stdin como arquivo
try: Import sys
Input_str = sys.stdin.read()
#todo o código de vocês
except EOFError:
break
Vamos Praticar?
Faça um programa para cadastrar N pessoas.
O usuário deverá informar o valor de N
nomes, N sobrenomes e N idades, em três
listas.
Um arquivo deve ser gerado.
A primeira linha deve informar quantas
pessoas estão cadastradas.
A partir da segunda linha do arquivo, deverá
conter o nome completo e a idade da pessoa.
Vamos Praticar?
Crie um programa simples que pergunta se a pessoa deseja ler um arquivo
ou escrever algo nele. Nosso script vai funcionar assim:
Aparece um menu de opções (sair, ler ou escrever).
Se digitar ler, lê o conteúdo do arquivo e exibe na tela.
Se optar por escrever, escreve algo no arquivo.
Tarefa extra: inicialmente verifique se o arquivo “teste.txt” já existe. Se não,
emita a mensagem “Arquivo não existe”, e na sequência o crie.
Dúvidas? Frequência