| Linha 29: | Linha 29: | ||
# Programa que abre arquivo.txt para gravação de dados e mostra o tipo do dado | # Programa que abre arquivo.txt para gravação de dados e mostra o tipo do dado | ||
: var_file = open("arquivo.txt","w") | # Digitando na linha de comando | ||
: print(var_file) | : >>> var_file = open("arquivo.txt","w") | ||
: >>> print(var_file) | |||
: open file 'arquivo.txt', mode 'w' at 0x7f775c2ec6f0> | : open file 'arquivo.txt', mode 'w' at 0x7f775c2ec6f0> | ||
: type(var_file) | : >>> type(var_file) | ||
: <type 'file'> | : <type 'file'> | ||
# Fim programa ------------------------------------------------------- | # Fim programa ------------------------------------------------------- | ||
Edição das 14h16min de 18 de fevereiro de 2017
Manipulação de arquivos
- Para criar arquivos em Python, inicialmente precisamos abrir um arquivo existente ou um novo
- Para isso, utilizamos a função open
- Para trabalhar com arquivos em Python, é necessário primeiro "abrir" o arquivo
- Depois "ler" ou "escrever" neste arquivo
- Finalmente "fechá-lo"
Abrindo arquivos
- Função open:
- Cria novos arquivos
- Abrie arquivos existentes, como leitura ou escrita
- Sintaxe:
- variável = open("file", "modo")
- variável = Nome da variável que vai receber o conteúdo da função open
- file = Nome do arquivo que se quer ler ou escrever.
- modo = Indica o que se quer fazer com o arquivo [ "r" (read), "w" (write)]
- variável = open("file", "modo")
- Exemplo na prática:
# Programa que abre arquivo.txt para gravação de dados e mostra o tipo do dado
- Digitando na linha de comando
- >>> var_file = open("arquivo.txt","w")
- >>> print(var_file)
- open file 'arquivo.txt', mode 'w' at 0x7f775c2ec6f0>
- >>> type(var_file)
- <type 'file'>
# Fim programa -------------------------------------------------------
- Pode-se verificar mais um tipo de dado além de int, float, string, lists e dictionaries, o tipo file.
- Ação:
- O arquivo.txt foi criado no modo escrita
- É exibido o endereço do arquivo que se encontra em memória RAM (opcional)
- O tipo da variável "var_file" com a função type() é verificado (opcional).
- Obs:
- Se o arquivo "arquivo.txt" já existisse, ele seria aberto como modo escrita
- Como no exemplo ele não existia, então foi criado como um novo arquivo
- Como Python é uma linguagem orientada a objetos, agora a variável "var_file" é um objeto, e podemos acessar os métodos desse objeto que são os seguintes:
- write(data)
- Escreve a string data para o arquivo, na posição atual ou ao final do arquivo, dependendo do modo de abertura
- Esta função falha se o arquivo foi aberto com modo "r".
- close()
- Fecha o arquivo. Sempre utilizado no final da manipulação do arquivo
- read()
- Retorna uma string única com todo o conteúdo do arquivo
- readline()
- Retorna a próxima linha do arquivo, e incrementa a posição atual
- readlines()
- Retorna todo o conteúdo do arquivo em uma lista, uma linha do arquivo por elemento da lista
- seek(n)
- Muda a posição atual do arquivo para o valor indicado em n
- write(data)
Gravando linhas no arquivo
- Exemplo de como escrever uma frase em um arquivo utilizando método write():
# Programa que abre o arquivo arquivo1.txt e insere 5 linhas
- newfile = open("/home/lclaudio/arquivo1.txt","w")
- newfile.write("casa")
- newfile.write("bola")
- newfile.write("dado")
- newfile.write("faca")
- newfile.write("gato")
- newfile.close()
- # Após ter escrito no arquivo através do método write(), é necessário fechar o arquivo como o método close()
- # Exemplo:
- newfile.close()
# Fim programa -------------------------------------------------------
- Abra o arquivo gerado e verifique o conteúdo:
- Linux: comando cat nomearquivo
- Windows: abra com Bloco de Notas
- Pode-se ver:
- casaboladadofacagato
- Agora, executando a seguinte sequência:
- casa
- bola
- dado
- faca
- gato
- O \n serve para definir a quebra de linha
- Dessa forma, dados podem ser gravados num arquivo e poderão ser armazenados após comando close
Exercícios
- Crie os arquivos abaixo com os conteúdos sugeridos e verifique se a gravação ocorreu como desejado:
- Arquivo minhaequipe.doc com os nomes dos integrantes
- Arquivo tarefas.txt com 10 atividades do dia
- Arquivo compras com 15 itens de compra
- Arquivo library.csv com o nomes de pelo menos 8 livros que leu este ano
- Arquivo gentileza com 30 nomes de pessoas que agradou nos últimos tempos
- Agora que alguns dados foram criados e gravados, vamos ler um arquivo.
- Modos para ler arquivos:
- readlines()
- read()
- readline()
- Modos para ler arquivos:
1. Lendo um arquivo - readlines( )
- Método readlines
- O arquivo "minhaequipe.doc" será lido pelo método readlines()
- Inicialmente, temos que abrir o arquivo, dessa vez com a opção r
# Programa que abre o arquivo minhaequipe.doc para leitura e le todas as linhas de uma vez
- readarq = open("/home/lclaudio/minhaequipe.doc","r")
- print(readarq)
- type(readarq)
- # Lendo e imprimindo todo o arquivo
- texto = readarq.readlines()
- print(texto)
- readarq.close()
# Fim programa -------------------------------------------------------
- Resultado: Interessante que neste caso, apareceram todas as linhas montadas num vetor e contendo a quebra de linha \n
['Alez Vaz Mendes\n', 'Lucas Guandalini Marchesoni\n', 'Luiz Cláudio Theodoro\n', 'Murilo Borges Gomes Machado\n', 'Pedro Aparecido Damaso de Melo\n', 'Rafael Leonardo Aquino\n', 'Rogério de Freitas\n']
- Lendo o arquivo e imprimindo de outra maneira
- O arquivo "minhaequipe.doc" novamente é lido pelo método readlines()
# Programa que abre o arquivo minhaequipe.doc para leitura. lê e imprime uma linha por vez
- readarq = open("/home/lclaudio/minhaequipe.doc","r")
- print(readarq)
- type(readarq)
-
- Lendo todo o arquivo e imprimindo item a item
- texto = readarq.readlines()
- for i in range(0,len(texto)):
- print(texto[i])
- readarq.close()
# Fim programa -------------------------------------------------------
- Dessa vez, é impresso linha a linha:
Alez Vaz Mendes Lucas Guandalini Marchesoni Luiz Cláudio Theodoro Murilo Borges Gomes Machado Pedro Aparecido Damaso de Melo Rafael Leonardo Aquino Rogério de Freitas
2. Lendo um arquivo - read( )
- Primeiro, criando o arquivo com alguns dados:
# Programa que abre o arquivo tarefas.txt para gravação, insere 10 atividades e posteriormente lê todas as linhas de uma vez
- newarq = open("/home/lclaudio/tarefas.txt","w")
- print(newarq) #apenas para demonstração
- type(newarq) #apenas para demonstração
- # Inserindo as atividades do dia no arquivo tarefas.txt
- newarq.write("01. Organizar escritório\n")
- newarq.write("02. Lavar churrasqueira\n")
- newarq.write("03. Trocar lâmpadas da sala\n")
- newarq.write("04. Cortar grama\n")
- newarq.write("05. Consertat maçaneta da porta\n")
- newarq.write("06. Levar Summer para passear\n")
- newarq.write("07. Fazer compras no mercado\n")
- newarq.write("08. Pagar mensalidade do clube\n")
- newarq.write("09. Configurar modem\n")
- newarq.write("10. Encher pneus do carro\n")
- newarq.close()
- #Método readl( )
- # O arquivo "tarefas.txt" será lido pelo método read()
- # Antes disso, temos que abrir o arquivo, novamente com a opção r
- # Lendo e imprimindo todo o arquivo
- readarq = open("/home/lclaudio/tarefas.txt","r")
- texto = readarq.read()
- print(texto)
- readarq.close()
# Fim programa -------------------------------------------------------
- O resultado é mostrado abaixo:
01. Organizar escritório 02. Lavar churrasqueira 03. Trocar lâmpadas da sala 04. Cortar grama 05. Consertat maçaneta da porta 06. Levar Summer para passear 07. Fazer compras no mercado 08. Pagar mensalidade do clube 09. Configurar modem 10. Encher pneus do carro
- Nota-se que a saída, não é uma lista como no readlines( ) mas sim um string contendo todas as atividades, separadas linha a linha
3. Lendo um arquivo - readline( )
- Novamente criando o arquivo com as mesmas atividades:
# Programa que cria um arquivo, insere 10 linhas e depois lê apenas uma
- newarq = open("/home/lclaudio/tarefas.txt","w")
- print(newarq)
- type(newarq)
- # Inserindo as atividades do dia no arquivo tarefas.txt
- newarq.write("01. Organizar escritório\n")
- newarq.write("02. Lavar churrasqueira\n")
- newarq.write("03. Trocar lâmpadas da sala\n")
- newarq.write("04. Cortar grama\n")
- newarq.write("05. Consertat maçaneta da porta\n")
- newarq.write("06. Levar Summer para passear\n")
- newarq.write("07. Fazer compras no mercado\n")
- newarq.write("08. Pagar mensalidade do clube\n")
- newarq.write("09. Configurar modem\n")
- newarq.write("10. Encher pneus do carro\n")
- newarq.close()
- # Lendo e imprimindo todo o arquivo
- readarq = open("/home/lclaudio/tarefas.txt","r")
- texto = readarq.readline()
- print(texto)
- readarq.close()
# Fim programa -------------------------------------------------------
- Resultado: Apenas uma linha lida
01. Organizar escritório
- Para ter todas as linhas do arquivo, é necessária uma condição de parada
- Nesse caso, poderemos ler linha a linha até que encontremos " " (branco) indicado fim de arquivo
# Lendo e imprimindo todo o arquivo # Programa que o abre o arquivo tarefas.txt e lê as linhas até o final do arquivo
- readarq = open("/home/lclaudio/tarefas.txt","r")
- texto = "alguma coisa"
- while(texto != ""):
- texto = readarq.readline().strip()
- print(texto)
- readarq.close()
# Fim programa -------------------------------------------------------
- Exemplo de programa que lê tamanhos definidos da linha
# Programa que abre o arquivo tarefas.txt para leitura e lê as linhas de acordo com um tamanho definido
- newarq = open("/home/lclaudio/tarefas.txt","w")
- print(newarq)
- type(newarq)
- # Inserindo as atividades do dia no arquivo tarefas.txt
- newarq.write("01. Limpar canil \n")
- newarq.write("02. Lavar churrasqueira \n")
- newarq.write("03. Trocar lâmpadas da sala \n")
- newarq.write("04. Cortar grama \n")
- newarq.write("05. Consertat maçaneta da porta \n")
- newarq.write("06. Levar Summer para passear \n")
- newarq.write("07. Fazer compras no mercado \n")
- newarq.write("08. Pagar mensalidade do clube \n")
- newarq.write("09. Configurar modem \n")
- newarq.write("10. Encher pneus do carro \n")
- newarq.close()
- # Lendo e imprimindo todo o arquivo
- readarq = open("/home/lclaudio/tarefas.txt","r")
- texto1 = readarq.readline(4)
- texto2 = readarq.readline(29)
- texto3 = readarq.readline(1)
- print(texto1)
- print(texto2)
- texto1 = readarq.readline(4)
- texto2 = readarq.readline(29)
- texto3 = readarq.readline(1)
- print(texto1)
- print(texto2)
- texto1 = readarq.readline(4)
- texto2 = readarq.readline(29)
- texto3 = readarq.readline(1)
- print(texto1)
- print(texto2)
- readarq.close()
# Fim programa -------------------------------------------------------
- Repare na saída:
01. Limpar canil 02. Lavar churrasqueira 03. Trocar lâmpadas da sala
- Pode-se notar que é possível ler uma linha definindo o tamanho do string
- Se a linha estiver bem estrturada é possível separar cada parte de maneira organizada
- Exercício:
- 1) Evolua no programa, criando um loop, lendo e imprimindo todas as linhas
- 2) Crie um programa que atenda a seguinte situação:
- A. Gere um arquivo alunos.doc
- B. Insira os seguintes campos: Nro, Nome e Matricula onde Nro começa em 1 e cresce de 1 em 1
- C. Inclua várias linhas de dados
- D. Leia cada linha imprimindo segundo o padrão abaixo
- E. ! Numero ! Nome do aluno ! Matricula ! Presença
- 3) Crie um menu que permita cadastrar e ler contatos