25
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações –UFF 2º semestre/2012

Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

  • Upload
    lytram

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Prof. Natalia Castro Fernandes

Mestrado em Telecomunicações – UFF

2º semestre/2012

Page 2: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Introdução� Arquivos são usados para fazer operações de entrada e

saída

� Disco, monitor, teclado, impressora

� Representação de arquivos em Python� Representação de arquivos em Python

� Classe file

Page 3: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Usando os arquivos� Uso:

� Abrir o arquivo

� Ler ou escrever

� Fechar o arquivo� Fechar o arquivo

Page 4: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Abrindo os arquivos� open(arquivo,modo,buffer)

� Retorna um objeto do tipo file

� Argumentos

� Arquivo = nome do arquivo com caminho. Se caminho omitido, busca no diretório local

� Modo = modo de abertura do arquivo, com padrão para leitura

� Opcional

� Tipos

r =leitura� r =leitura

� w =escrita

� b =binário

� a =escrita a partir do final

� r+ =leitura e escrita

� Buffer =indica se a memória será usada para acelerar a operação

� Opcional

� Tipos

� 0 = não usa buffer

� 1 ou número negativo = buffer padrão

� 2 ou número > 2 = tamanho do buffer em bytes

Evite usar, pois, usualmente, é fonte de erro.

Page 5: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Manipulação de arquivos� Leitura

� Arquivo.read(num_bytes)

� Lê num_bytes de Arquivo e os retorna em uma string

� Se num_bytes não é especificado, retorna uma string � Se num_bytes não é especificado, retorna uma string contendo desde o ponto atual até o final

� Arquivo.readline()

� Lê uma linha do arquivo

� Arquivo.readlines()

� Gera uma lista com todas as linhas do arquivo

Page 6: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Manipulação de arquivos� Escrita

� Arquivo.write(texto)

� Escreve texto no arquivo

� Comando termina mesmo que o conteúdo ainda esteja em � Comando termina mesmo que o conteúdo ainda esteja em buffer e não tenha ainda sido escrito em disco

� Métodos flush() e close() asseguram a escrita de todo o conteúdo do buffer

� Texto precisa ser do tipo string

� Se for escrever outro tipo de dado, converter com o método str()

Page 7: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Manipulação de arquivos� Escrita

� Arquivo.writelines(lista_de_strings)

� Escreve as strings da lista no arquivo, concatenando-as.

Page 8: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Manipulação de arquivos� Posição atual do ponteiro do arquivo

� Arquivo.tell()� Posição medida em byte

� Reposicionamento do ponteiro� Arquivo.seek(offset,a_partir_de)� Arquivo.seek(offset,a_partir_de)

� Offset = quanto deve ser movido� Valores positivos ou negativo

� A_partir_de = de qual ponto deve ser marcado o offset� Opcional, tendo por padrão o inicio do arquivo� Valores

� 0 = inicio do arquivo� 1 = posição atual� 2 = fim do arquivo

Page 9: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Finalizando o uso do arquivo� Arquivo.close()

� Finaliza o uso do arquivo

� Garante que todas as operações foram finalizadas para aquele arquivoaquele arquivo

Page 10: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplos� Criando arquivos

Se o arquivo é novo, é obrigatório indicar que é uma operação de

escrita.

Page 11: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplos

� Criando arquivos

Page 12: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplos� Abrindo arquivos binários

Page 13: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplos� Leitura de arquivos e seek

Page 14: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplos� Leitura de arquivos e seek Arquivo:

12345678910 11 1210 11 12

Page 15: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplos� Escrita

Arquivo original:

12345678910 11 12

Page 16: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplos� Escrita

Page 17: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Convenções de fim de linha� A forma de representação do caractere fim de linha

muda dependendo do sistema operacional

� Windows: \r\n

� Linux: \n� Linux: \n

� MacOS: \r

� Python converte automaticamente essas representações para \n se o arquivo for aberto em modo texto (r,w,a,r+)

� Essa conversão não é feita se o arquivo é aberto em modo binário (b)

Page 18: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Varrendo um arquivo completo� Os métodos read() e readlines() permitem ler todas as

linhas

� Para fazer um loop linha a linha:

� for linha in obj_arquivo:� for linha in obj_arquivo:

� print line

Page 19: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Arquivos especiais� Comunicação com o monitor

� Comando print escreve no arquivo sys.stdout

� Comunicação com o teclado

Comandos input e raw_input leem do arquivo sys.stdin� Comandos input e raw_input leem do arquivo sys.stdin

� Comunicação de erro e exceções

� Escrita das mensagens no arquivo sys.stderr

Page 20: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

ExemplosEquivalente ao

print.

Equivalente ao raw_input, sem escrever algum

texto na tela.

Page 21: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Redirecionamento de Saídas� Programa > arquivo

� O conteúdo que seria escrito em sys.stdout é escrito em arquivo

� Em Linux, no shell bash, essa notação redireciona o � Em Linux, no shell bash, essa notação redireciona o sys.stderr para arquivo

� Programa < arquivo

� O conteúdo de sys.stdin, que seria a entrada, é substituído por arquivo

� Programa1 | Programa2

� A saída de Programa1 é redirecionada para Programa2

Page 22: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exemplo

Page 23: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exercícios� Em um script:

� Crie um arquivo

� Escreva 10 caracteres aleatórios nesse arquivo e finalize a linhaa linha

� Feche o arquivo

� Repita a operação anterior por 1000 vezes, mas as linhas devem ser adicionadas ao arquivo e não sobrescritas.

� Feche o arquivo

� Abra o arquivo que você acabou de criar e conte quantas vezes aparece a vogal ‘a’ e a combinação ‘de’

Page 24: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exercícios� Crie dois arquivos e, em cada um, coloque um texto

extraído da Internet com várias linhas. Em seguida, crie um script que:

� Mescle o conteúdo dos dois arquivos em um terceiro � Mescle o conteúdo dos dois arquivos em um terceiro arquivo

� Inverta o conteúdo do 1º arquivo. Atenção: O resultado final não é um novo arquivo, mas o primeiro arquivo com o conteúdo sobrescrito.

Page 25: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide9.pdfstrings da lista no q uivo, conc en do-. ... 1 = posição atual ... Com do print escreve no q uivo sys.stdout

Exercícios� Crie um arquivo e coloque dentro dele um texto

extraído da Internet com várias linhas. Em seguida:

� Guarde em uma lista as três últimas letras que aparecem antes de cada vogal.antes de cada vogal.