250 likes | 338 Views
Programação Avançada Manipulação de arquivos. 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.
E N D
Programação AvançadaManipulação de arquivos 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 • 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.
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 Se o arquivo é novo, é obrigatório indicar que é uma operação de escrita. • Criando arquivos
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
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.