Linha 248: Linha 248:
* Resultado: Apenas uma linha lida
* Resultado: Apenas uma linha lida
  01. Organizar escritório
  01. Organizar escritório
<br>
* Para ter todas as linhas do arquivo, é necessária uma condição de parada

Edição das 17h07min de 27 de maio de 2016

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)]


  • Exemplo na prática:
var_file = open("arquivo.txt","w")
print(var_file)
open file 'arquivo.txt', mode 'w' at 0x7f775c2ec6f0>
type(var_file)
<type 'file'>
  • 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


Gravando linhas no arquivo


  • Exemplo de como escrever uma frase em um arquivo utilizando método write():
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() 


  • 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:
  1. Arquivo minhaequipe.doc com os nomes dos integrantes
  2. Arquivo tarefas.txt com 10 atividades do dia
  3. Arquivo compras com 15 itens de compra
  4. Arquivo library.csv com o nomes de pelo menos 8 livros que leu este ano
  5. 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()


1. Lendo um arquivo - readlines( )


  • Método readlines
    • O arquivo "minhaequipe.doc" será lido pelo método readlines()
    • Antes disso, temos que abrir o arquivo, dessa vez com a opção r
readarq = open("/home/lclaudio/minhaequipe.doc","r")
print(readarq)
type(readarq)

# Lendo e imprimindo todo o arquivo
texto = readarq.readlines()
print(texto)
readarq.close()


  • 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()
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()
  • 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:
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()
  • 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:


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()
  1. Lendo e imprimindo todo o arquivo
readarq = open("/home/lclaudio/tarefas.txt","r")
texto = readarq.readline()
print(texto)
readarq.close()


  • Resultado: Apenas uma linha lida
01. Organizar escritório


  • Para ter todas as linhas do arquivo, é necessária uma condição de parada