Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012 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 Classe file Usando os arquivos Uso: Abrir o arquivo Ler ou escrever Fechar o arquivo 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 w =escrita b =binário a =escrita a partir do final r+ =leitura e escrita Evite usar, pois, usualmente, é fonte de erro. 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 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 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 Manipulação de arquivos Escrita Arquivo.write(texto) Escreve texto no arquivo 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() Manipulação de arquivos Escrita Arquivo.writelines(lista_de_strings) Escreve as strings da lista no arquivo, concatenando-as. 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) 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 Finalizando o uso do arquivo Arquivo.close() Finaliza o uso do arquivo Garante que todas as operações foram finalizadas para aquele arquivo Exemplos Criando arquivos Se o arquivo é novo, é obrigatório indicar que é uma operação de escrita. Exemplos Criando arquivos Exemplos Abrindo arquivos binários Exemplos Leitura de arquivos e seek Exemplos Leitura de arquivos e seek Arquivo: 123 456 789 10 11 12 Exemplos Escrita Arquivo original: 123 456 789 10 11 12 Exemplos Escrita 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 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) 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: print line 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 Comunicação de erro e exceções Escrita das mensagens no arquivo sys.stderr Exemplos Equivalente ao print. Equivalente ao raw_input, sem escrever algum texto na tela. 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 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 Exemplo Exercícios Em um script: Crie um arquivo Escreva 10 caracteres aleatórios nesse arquivo e finalize a 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’ 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 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. 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.