Arquivos. Leonardo Murta

Documentos relacionados
Arquivos. Vanessa Braganholo

Arquivos. Vanessa Braganholo

Arquivos. Introdução à Programação SI1

Python: Entrada e Saída. Claudio Esperança

Arquivos. Vanessa Braganholo

Subprogramação. Vanessa Braganholo

TCC 00308: Programação de Computadores I Organização de programas em Python

Estruturas de Repetição. Leonardo Murta

Estruturas de Repetição. Vanessa Braganholo

Computação 1 - Python Aula 11 - Teórica. programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 29

LINGUAGEM C: ARQUIVOS

Vetores. Vanessa Braganholo

Organização de programas em Python. Vanessa Braganholo

Estruturas de Repetição. Vanessa Braganholo

MCG126 Programação de Computadores II

Capítulo 6: Arquivos

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

Métodos Computacionais. Arquivos

Manipulação de Strings. Vanessa Braganholo

Estruturas de Repetição e String. Vanessa Braganholo

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Manipulação de arquivos.

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Manipulação de Strings. Vanessa Braganholo

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Exercícios: Arquivos

Linguagem C: Introdução

Este capítulo apresenta as técnicas de manipulação de arquivos texto, binários e suas principais funções de I/O.

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Computação 1 - Python Aula 9 - Teórica: Interferindo no fluxo de repetição: Break e Continue Laços Aninhados

Capítulo 06: Arquivos

Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10

Introdução à Computação II AULA 08 BCC Noturno - EMA896115B

Exercícios Repetição

Computação 1 - Python Aula 7 - Teórica Estrutura de Repetição com Teste de Parada: while. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

C A P I T U L O 2 S I N T A X E B Á S I C A - V A R I Á V E I S E C O N S T A N T E S E M P H P

TCC 00308: Programação de Computadores I Introdução

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Programação Básica. Estrutura de um algoritmo

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

Python - Variáveis e expressões

Computação 2. Aula 3. Diego Addan Vetores de caracteres (strings)

LINGUAGEM C: ARQUIVOS

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Disciplina de Algoritmos e Programação

Sistema Operacional Unidade 11.2 Shell Script: estruturas condicionais. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza

Introdução à Programação. Vanessa Braganholo

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

INF 1620 P4-06/12/02 Questão 1 Nome:

1ª Lista de Exercícios

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

Arquivos em C. Notas de Aula. Prof. Francisco Rapchan

PROGRAMAÇÃO DE COMPUTADORES

Lista de Comandos: Arquivo texto e Binário

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Arquivos de Texto UFOP 1/31

Estrutura de Dados Básica

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Matrizes. Vanessa Braganholo

Exercícios: Vetores e Matrizes

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

MAC2166 Introdução à Computação

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Fundamentos de Arquivos

Ficheiros de texto 1. Ficheiros de texto. 1. Implementar um programa que leia uma frase do teclado e a escreva num ficheiro.

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Prova - 14 de junho de 2017

Administração de sistemas Linux. Permissões de arquivos e diretórios em sistemas linux.

Ficheiros de Valores Separados por Vírgulas (CSV)

Manipulação de Arquivos Binários

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Arquivos binários em Python

Introdução à Programação

Sistemas de arquivos

Registros, Vetores e Matrizes

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa:

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Transcrição:

Arquivos Leonardo Murta leomurta@ic.uff.br

Aula de hoje } Até então só consideramos teclado e monitor como mecanismos de entrada e saída } Veremos como ler e escrever em arquivos

Motivação } Em algumas situações é desejado ler dados de arquivos e escrever dados em arquivos } Não é necessário digitar via teclado os dados a cada execução do programa } Os resultados do programa podem ser impressos ou enviados para outras pessoas com mais facilidade } O estado do programa (jogo, por exemplo) pode ser salvo e recarregado em outro momento

Operações Básicas } Abertura do arquivo } Liga uma variável do programa com o arquivo físico } Essa variável deve ser usada no programa para manipular o arquivo (ler e escrever no arquivo) } Leitura/Escrita no arquivo } Fechamento do arquivo } Encerramento da conexão da variável com o arquivo físico 4

Escrita de arquivos } É muito parecido com escrita no monitor, só que precisa conectar com o arquivo antes (abrir o arquivo) } Vamos ver um exemplo...

Exemplo: escrevendo números aleatórios no monitor import random def escrever_numeros_aleatorios(qtd_numeros): for i in range(qtd_numeros): print(random.randint(0,100)) escrever_numeros_aleatorios(100)

Exemplo: escrevendo números aleatórios em um arquivo import random def escrever_numeros_aleatorios(qtd_numeros, nome_arquivo): arquivo_numeros = open(nome_arquivo, w ) for i in range(qtd_numeros): arquivo_numeros.write(str(random.randint(0,100)) arquivo_numeros.write("\n ) arquivo_numeros.close() escrever_numeros_aleatorios(100, aleatorios.txt )

Exemplo: escrevendo números aleatórios em um arquivo import random O arquivo aparecerá na raiz do projeto do PyCharm def escrever_numeros_aleatorios(qtd_numeros, nome_arquivo): arquivo_numeros = open(nome_arquivo, w ) for i in range(qtd_numeros): arquivo_numeros.write(str(random.randint(0,100)) arquivo_numeros.write("\n ) arquivo_numeros.close() escrever_numeros_aleatorios(100, aleatorios.txt ) Abertura do arquivo para escrita e posterior fechamento

Exemplo: escrevendo números aleatórios em um arquivo import random def escrever_numeros_aleatorios(qtd_numeros, nome_arquivo): arquivo_numeros = open(nome_arquivo, w ) for i in range(qtd_numeros): arquivo_numeros.write(str(random.randint(0,100)) arquivo_numeros.write("\n ) arquivo_numeros.close() escrever_numeros_aleatorios(100, aleatorios.txt ) Escrita no arquivo

Leitura de arquivos } Novamente, é muito parecido com leitura do teclado, só que precisa conectar com o arquivo antes (abrir o arquivo) } Vamos ver um exemplo...

Exemplo: lendo números do teclado e escrevendo a média def escrever_media(qtd_numeros): soma = 0 for i in range(qtd_numeros): num = float(input("digite o número:")) soma += num return soma/qtd_numeros escrever_media(100)

Exemplo: lendo números de um arquivo e escrevendo a média def escrever_media(qtd_numeros, nome_arquivo): arquivo_numeros = open(nome_arquivo) soma = 0 for i in range(qtd_numeros): num = float(arquivo_numeros.readline().strip()) soma += num arquivo_numeros.close() return soma/qtd_numeros escrever_media(100, media.txt ) O arquivo será procurado na raiz do projeto do PyCharm Abertura do arquivo para leitura e posterior fechamento

Exemplo: lendo números de um arquivo e escrevendo a média def escrever_media(qtd_numeros, nome_arquivo): arquivo_numeros = open(nome_arquivo) soma = 0 for i in range(qtd_numeros): num = float(arquivo_numeros.readline().strip()) soma += num arquivo_numeros.close() return soma/qtd_numeros escrever_media(100, media.txt ) Leitura do arquivo

Exemplo: lendo números de um arquivo e escrevendo a média def escrever_media(qtd_numeros, nome_arquivo): arquivo_numeros = open(nome_arquivo) soma = 0 for i in range(qtd_numeros): num = float(arquivo_numeros.readline().strip()) soma += num arquivo_numeros.close() return soma/qtd_numeros escrever_media(100, media.txt ) Interação no arquivo quando a quantidade de valores no arquivo é conhecida

Fazendo de outra forma... def escrever_media(nome_arquivo): arquivo_numeros = open(nome_arquivo) soma = 0 qtd_numeros = 0 for num in arquivo_numeros: num = float(num.strip()) soma += num qtd_numeros += 1 arquivo_numeros.close() return soma/qtd_numeros escrever_media( media.txt ) Lendo todos os valores do arquivo com o comando for

Agora usando while... def escrever_media(nome_arquivo): arquivo_numeros = open(nome_arquivo) soma = 0 qtd_numeros = 0 num = arquivo_numeros.readline() Lendo todos os valores do arquivo com o comando while while num!= "": num = float(num.strip()) soma += num qtd_numeros += 1 num = arquivo_numeros.readline() arquivo_numeros.close() return soma/qtd_numeros escrever_media( media.txt )

Detalhes do comando de abertura do arquivo } var_arquivo = open(nome_arquivo, modo, buffering) } modo } r: leitura (default) o arquivo deve existir } w: escrita conteúdo existente no arquivo será apagado } b: binário } a: escrita a partir do final do arquivo (append) } +: (usado com r) indica leitura e escrita 17

Detalhes do comando de abertura do arquivo } var_arquivo = open(nome_arquivo, modo, buffering) } buffering (opcional) } Indica se memória (buffer) é usada para acelerar operações de entrada e saída } 0: buffers não são usados } 1 (ou qq número negativo): um buffer de tamanho padrão é usado (default) } 2 ou maior: tamanho do buffer em bytes 18

Como funciona um buffer? buffer Memória de Dados read Arquivo Programa 19

Detalhes do comando de escrita } Necessário que o arquivo não tenha sido aberto em modo r } var_arquivo.write(string) } Escreve a string no arquivo } Devido ao uso de buffers, a escrita pode não ser feita imediatamente } Use o comando flush() ou close() para assegurar a escrita física no arquivo 20

Detalhes do comando de escrita } Necessário que o arquivo não tenha sido aberto em modo r } var_arquivo.writelines(sequencia) } Escreve a lista de strings no arquivo, uma por uma } Caracteres de final de linha não são acrescentados no arquivo } Fica tudo numa única linha 21

Detalhes do comando de leitura } Necessário que o arquivo tenha sido aberto em modo leitura ou leitura/escrita } var_string = var_arquivo.readline() } Lê uma linha do arquivo e a retorna como string } var_lista_string = var_arquivo.readlines() } Lê o arquivo do ponto atual até o final, e retorna o conteúdo em uma lista de strings } Cada linha do arquivo é guardada em uma posição da lista 22

Exemplo: Copiando dois arquivos def copia_arquivo(velho_arquivo, novo_arquivo): f1 = open(velho_arquivo, "r") f2 = open(novo_arquivo, "w") for texto in f1: f2.write(texto) f1.close() f2.close() copia_arquivo("velho.txt", "novo.txt") 23

Interação com o OS } Operações de entrada e saída são na verdade realizadas pelo sistema operacional } O módulo os possui diversas variáveis e funções que ajudam um programa Python a se adequar ao sistema operacional 24

Funções do módulo os } os.getcwd() } Retorna o diretório corrente } os.chdir(dir) } Muda o diretório corrente para dir } os.sep } É uma string que contém o caracter que separa os componentes de um caminho ( /" para Unix, "\\" para Windows) } os.path.exists(path) } Retorna True se o arquivo path existe 25

Exercícios 1. Faça um programa que leia um número N e gere um arquivo com N nomes e idades aleatórios } Faça uso de duas listas criadas na mão: uma que contenha 20 nomes e outra que contenha 20 sobrenomes } Cada linha do arquivo resultante deve conter um nome completo e a sua idade 2. Estenda o exemplo do cadastro para considerar também a altura da pessoa } Armazene a altura como float

Exercícios 3. Escreva uma função que recebe dois nomes de arquivos e copia o conteúdo do primeiro arquivo para o segundo arquivo. Considere que o conteúdo do arquivo de origem é um texto. Sua função não deve copiar linhas comentadas (que começam com //) 4. Faça um programa contendo uma função que recebe como argumentos os nomes de dois arquivos. O primeiro arquivo contém nomes de alunos e o segundo arquivo contém as notas dos alunos. No primeiro arquivo, cada linha corresponde ao nome de um aluno e no segundo arquivo, cada linha corresponde às notas dos alunos (uma ou mais). Assuma que as notas foram armazenadas como strings, e estão separadas umas das outras por espaços em branco. Leia os dois arquivos e gere um terceiro arquivo que contém o nome do aluno seguido da média de suas notas.

Exercícios 5. Faça um programa para alterar uma das notas de um aluno (usando os arquivos do exercício anterior). O programa deve ter uma função que recebe o nome do aluno, a nota velha e a nova nota. A função deve fazer a alteração no arquivo. 6. Faça uma função que leia um arquivo texto contendo uma lista de endereços IP e gere dois outros arquivos, um contendo os endereços IP válidos e outro contendo os endereços inválidos. O formato de um endereço IP é num1.num.num.num, onde num1 vai de 1 a 255 e num vai de 0 a 255. 28

Referências } Slides feitos em conjunto com Aline Paes e Vanessa Braganholo

Arquivos Vanessa Braganholo vanessa@ic.uff.br