Prévia do material em texto
<p>Manipulação de dados em arquivos</p><p>Prof. Frederico Tosta de Oliveira</p><p>Prof. Kleber de Aguiar</p><p>Apresentação</p><p>A partir da linguagem de programação Python, vamos compreender as</p><p>formas de armazenamento e recuperação de dados em arquivos e</p><p>diretórios, os passos necessários para manipulação de arquivos e</p><p>strings, utilizando as boas práticas de programação e o tratamento de</p><p>exceção, para garantir o correto funcionamento do programa.</p><p>Propósito</p><p>Objetivos</p><p>Módulo 1</p><p>Funções de manipulação de arquivos</p><p>Identificar as funções de manipulação de arquivos.</p><p>Módulo 2</p><p>Funções de manipulação de strings</p><p>Reconhecer as funções de manipulação de strings.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 1/86</p><p>Módulo 3</p><p>Tratamento de exceções e outras operações</p><p>Descrever as exceções na manipulação de arquivos e outras</p><p>operações.</p><p>Introdução</p><p>1 - Funções de manipulação de arquivos</p><p>Ao �nal deste módulo, você será capaz de identi�car as funções de manipulação de arquivos.</p><p>Operações básicas</p><p>A habilidade de manipular arquivos é fundamental para qualquer</p><p>desenvolvedor, uma vez que quase todas as aplicações modernas</p><p>necessitam interagir com arquivos de algum tipo.</p><p></p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 2/86</p><p>Conhecer as operações básicas de manipulação de</p><p>arquivos, como abrir, fechar, ler e escrever, permite a</p><p>implementação eficiente de recursos, como</p><p>armazenamento de dados, configurações de usuário, e</p><p>processamento de entrada/saída.</p><p>Dominar essas operações é essencial para garantir a integridade e a</p><p>segurança dos dados manipulados e a eficiência e eficácia dos</p><p>sistemas de informação.</p><p>Neste vídeo, você vai entender como manipular arquivos com eficiência</p><p>em Python. Vamos abordar as operações básicas, ou seja, abrir, ler,</p><p>escrever e fechar arquivos, usando exemplos práticos.</p><p>Conceitos</p><p>Abrindo um arquivo</p><p>Veja as operações básicas de manipulação de arquivos:</p><p></p><p>Abrir</p><p></p><p>Fechar</p><p></p><p>Ler</p><p></p><p>Escrever</p><p>A primeira operação que precisamos realizar, independentemente se</p><p>vamos ler o conteúdo de um arquivo ou adicionar um conteúdo, é abrir o</p><p>arquivo.</p><p>Para abrir um arquivo, o Python disponibiliza a função interna chamada</p><p>open. Essa função está disponível globalmente, ou seja, não é preciso</p><p>importá-la.</p><p>A função open retorna um objeto do tipo arquivo. Sua forma mais</p><p>simples de utilização tem a seguinte sintaxe:</p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 3/86</p><p>Utilizamos a função open com o parâmetro caminho. Esse parâmetro é</p><p>uma string que representa a localização do arquivo no sistema de</p><p>arquivos.</p><p>Veja como é fácil abrir um arquivo:</p><p>Abertura do arquivo.</p><p>Temos, inicialmente, o script inicial e sua saída.</p><p>Arquivos script_inicial.py e teste.txt.</p><p>Temos, à esquerda da imagem, a árvore de diretório, onde</p><p>verificamos a existência dos arquivos script_inicial.py e</p><p>teste.txt, ambos no mesmo diretório EAD.</p><p>Código do script e a saída de controle.</p><p>Temos, ao centro, o código do nosso script e, à direita, a saída</p><p>do console.</p><p>A função open para a abertura do arquivo teste.txt.</p><p>Utilizamos, na linha 1 do script, a função open para abrir o</p><p>arquivo teste.txt. Isso já é suficiente para termos um objeto do</p><p>tipo arquivo e começar a manipulá-lo.</p><p>Impressão da frase “Arquivo aberto com sucesso!”.</p><p>Imprimimos, na linha 3, a frase “Arquivo aberto com sucesso!”</p><p>apenas para verificar se o programa foi executado sem</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 4/86</p><p>problemas.</p><p>Nesse exemplo, o caminho utilizado para abrir o arquivo foi “teste.txt”,</p><p>pois o script e o arquivo que abrimos estão no mesmo diretório. Porém,</p><p>não precisamos nos limitar a manter os arquivos e scripts no mesmo</p><p>diretório.</p><p>Veja como o Python trata o acesso aos arquivos a seguir. O caminho de</p><p>um arquivo pode ser classificado em dois tipos:</p><p>Absoluto</p><p>É a referência completa para se encontrar um arquivo ou</p><p>diretório. Ele deve começar com uma barra ( / ) ou o rótulo do</p><p>drive ( C:, D: ...).</p><p>Exemplo:</p><p>open(“C:\Downloads\arquivo.txt”) – utilizado em ambientes MS</p><p>Windows.</p><p>open(“/home/usuario/arquivo.txt”) – utilizado em ambientes</p><p>Linux.</p><p>Relativo</p><p>É a referência para se encontrar um arquivo ou diretório a partir</p><p>de outro diretório. Normalmente, a partir do diretório de onde o</p><p>script está.</p><p>Exemplo:</p><p>open(“arquivo.txt”), para os casos em que o arquivo está no</p><p>mesmo diretório do script.</p><p>open(“../arquivo.txt”), para os casos em que o arquivo está no</p><p>diretório acima do script.</p><p>Vamos criar um script que ilustra as diferentes formas de referenciar um</p><p>arquivo com caminhos absolutos e relativos.</p><p>No exemplo, a seguir, alteramos um pouco a forma de exibir o conteúdo:</p><p>Script 1, sua saída e o arquivo dados1.txt.</p><p>Temos, inicialmente, o script1, sua saída e arquivo dados1.txt.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 5/86</p><p>Árvore de diretórios.</p><p>Temos, à esquerda, nossa árvore de diretórios.</p><p>O script1.py.</p><p>Temos, ao centro, o script1.py.</p><p>O arquivo dados.txt e saída do console do Python.</p><p>Temos, à direita, o arquivo dados.txt, e, abaixo, a saída do</p><p>console do Python. Na linha 1 do script1.py, importamos o</p><p>módulo os do Python.</p><p>Abertura do arquivo “dados1.txt” pelo caminho relativo.</p><p>Utilizamos, na linha 4, a função open para abrir o arquivo</p><p>“dados1.txt”, que se encontra no mesmo diretório do nosso</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 6/86</p><p>script. Nessa linha, utilizamos o caminho relativo. Observe que,</p><p>como o arquivo dados1.txt está na mesma pasta EAD que o</p><p>script1.py, basta escrever o nome do arquivo como argumento.</p><p>Abertura do arquivo “dados1.txt” pelo caminho abosluto.</p><p>Abrimos, na linha 5, o mesmo arquivo dados1.txt, utilizando o</p><p>caminho absoluto (completo), que, no nosso exemplo, é:</p><p>"C:/EAD/dados1.txt".</p><p>Abertura do arquivo dados2.txt usando os dois caminhos.</p><p>Abrimos, nas linhas 8 e 9, o arquivo dados2.txt, que se</p><p>encontra na pasta documentos. Na linha 8, utilizamos o</p><p>caminho relativo desse arquivo para abri-lo:</p><p>"documentos/dados2.txt", enquanto, na linha 9, utilizamos o</p><p>caminho absoluto: "C:/EAD/documentos/dados2.txt".</p><p>O Python também disponibiliza algumas funções para exibir os</p><p>caminhos absolutos e relativos de um arquivo ou diretório, que são:</p><p>Na linha 11, utilizamos a função path.relpath para imprimir o</p><p>caminho relativo do arquivo1, a partir do nome do arquivo passado</p><p>como parâmetro.</p><p>Na linha 12, utilizamos a função path.abspath para exibir o caminho</p><p>absoluto do mesmo arquivo. Observe que, mesmo utilizando o</p><p>caminho relativo para abrir o arquivo (linha 4), é possível obter o</p><p>caminho absoluto utilizando essa função. Isso pode ser verificado</p><p>na saída do console.</p><p>Na linha 14, utilizamos a função interna print para imprimir a</p><p>variável arquivo1.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 7/86</p><p>Verifique, na saída do console, onde foi impressa a representação do</p><p>objeto arquivo1:</p><p>Python </p><p>Desmembrando essa saída, temos:</p><p>O tipo do objeto, TextIOWrapper, que trata de arquivos de texto.</p><p>O nome do arquivo, name='dados.txt'.</p><p>O modo de acesso ao arquivo, mode='r'.</p><p>A codificação do arquivo, encoding='cp1252'.].</p><p>Neste módulo, vamos tratar apenas de arquivos do tipo texto, ou seja,</p><p>objetos TextIOWrapper. A seguir, vamos apresentar os diferentes modos</p><p>de acesso aos arquivos.</p><p>Modos de acesso a um arquivo</p><p>Quando abrimos um arquivo, precisamos informar ao Python o que</p><p>desejamos fazer, ou seja, qual será o modo (mode) de acesso ao</p><p>arquivo. O modo é um dos parâmetros</p><p>eficazes e tornar seu código mais robusto e confiável.</p><p>Tratamento de exceções</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 57/86</p><p>Quando trabalhamos com arquivos, é comum encontrarmos alguns</p><p>problemas, como arquivo inexistente e falta de permissão para escrever</p><p>em um. A maioria desses problemas só pode ser detectada durante a</p><p>execução do programa.</p><p>Quando uma falha inesperada ocorre e o interpretador não consegue</p><p>resolver o problema, dizemos que houve uma exceção.</p><p>Nesses casos, precisamos informar ao interpretador como tratar a</p><p>exceção, para que o programa não seja interrompido.</p><p>Se a exceção é um problema inesperado, como tratá-la?</p><p>Ao desenvolver um programa, precisamos procurar na documentação</p><p>da biblioteca, do módulo ou da própria linguagem de programação se as</p><p>funcionalidades que vamos utilizar têm exceções mapeadas. Essas</p><p>exceções são problemas que podem ocorrer, e é nossa tarefa tratá-las.</p><p>Você deve estar se perguntando: “O que seria ‘tratar uma exceção?”.</p><p>Isso nada mais é do que dizer ao Python o que fazer, ou quais instruções</p><p>executar, quando ele encontrar um problema.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 58/86</p><p>Para ilustrar, observe os seguintes passos:</p><p>Veja o que acontece quando uma exceção lançada não é tratada:</p><p>Script 22 e saída.</p><p> Quando abrimos um arquivo em modo leitura e</p><p>esse arquivo não existe, o Python lança uma</p><p>exceção do tipo FileNotFoundError.</p><p> Se não avisarmos ao Python o que fazer quando</p><p>isso ocorrer, o programa será interrompido.</p><p> Nesse caso, um tratamento para essa exceção</p><p>poderia ser: exibir um pop-up ao usuário</p><p>informando que o arquivo não existe.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 59/86</p><p>Temos o script 22 e sua saída.</p><p>Impressão da string “Abrindo um arquivo”.</p><p>Imprimimos, na linha 1, a string “Abrindo um arquivo”. Essa</p><p>impressão serve para acompanhar a execução do programa no</p><p>console.</p><p>Abertura do arquivo teste.txt no modo leitura.</p><p>Abrimos, na linha 3, o arquivo teste.txt no modo leitura. Esse</p><p>arquivo não existe no diretório modulo3 no qual estamos</p><p>trabalhando, como podemos observar pela árvore de diretórios</p><p>à esquerda da figura.</p><p>Criação de um contador e aplicação do método split.</p><p>Recebemos um erro, ao executarmos o programa, destacado</p><p>em vermelho no console. O nome do erro é FileNotFoundError,</p><p>e a sua descrição é No such file or directory (em tradução</p><p>literal, não existe tal arquivo ou diretório), seguido do nome do</p><p>arquivo que apresentou o erro, teste.txt.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 60/86</p><p>Exceção gerada.</p><p>Essa exceção foi gerada, ou lançada, de acordo com o linguajar</p><p>da computação, pois o Python não sabia qual caminho tomar</p><p>ao encontrar esse problema. Observe que a linha 5 não foi</p><p>executada, pois o programa parou sua execução assim que o</p><p>problema foi encontrado.</p><p>Para resolver isso, precisamos tratar a exceção, ou melhor, uma possível</p><p>exceção. Esse tratamento informa ao Python uma rota alternativa, caso</p><p>ele encontre um problema.</p><p>Para tratar exceções, precisamos “envolver” o trecho</p><p>de código passível de erro com a cláusula try/except</p><p>ou try/except/finally. Veremos apenas a cláusula</p><p>try/except.</p><p>Veja a sintaxe a seguir:</p><p>Sintaxe try/except.</p><p>O código crítico que desejamos executar deve estar no escopo do try,</p><p>enquanto o código alternativo, que será executado em caso de erro,</p><p>deve estar no escopo do except.</p><p>Uma mesma operação pode lançar mais de um tipo diferente de</p><p>exceção, em que, para cada tipo, Erro1 e Erro2, devemos ter uma</p><p>cláusula except específica.</p><p>No exemplo da imagem, a exceção está disponível por meio da variável</p><p>erro, de onde podemos extrair mais informações, como veremos a</p><p>seguir.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 61/86</p><p>Praticamente todas as exceções em Python são herdadas da classe</p><p>Exception, ou seja, ela é uma exceção muito genérica, lançada por</p><p>diversos tipos de erros diferentes. Quanto mais genérica, mais</p><p>abrangente é a exceção.</p><p>Atenção!</p><p>Não é uma boa prática utilizar exceções abrangentes, pois elas podem</p><p>silenciar erros que não esperamos. O ideal é tratar as exceções</p><p>utilizando a forma mais específica possível.</p><p>Confira algumas exceções específicas relacionadas à manipulação de</p><p>arquivos e alguns motivos que podem gerar essas exceções:</p><p>PermissionError</p><p>Lançada quando não temos permissão para realizar uma operação.</p><p>FileExistsError</p><p>Lançada quando tentamos criar um arquivo ou diretório já existentes.</p><p>FileNotFoundError</p><p>Lançada quando tentamos abrir um arquivo ou diretório que não</p><p>existem.</p><p>Todas essas exceções herdam da exceção mais abrangente OSError,</p><p>que, por sua vez, herda de Exception.</p><p>Observe o exemplo a seguir, onde vamos tratar a exceção do exemplo</p><p>anterior, utilizando a exceção específica mais indicada:</p><p>FileNotFoundError:</p><p>Script 23 e saída.</p><p>Temos o script 23 e sua saída.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 62/86</p><p>Indentação das linhas 4 e 5.</p><p>“Envolvemos” o código que pode gerar problema com o try.</p><p>Para isso, indentamos as linhas 4 e 5.</p><p>Indentação das linhas 7 e 8.</p><p>Precisamos, para tratar o erro, explicitar qual o tipo que vamos</p><p>tratar. Nesse caso, FileNotFoundError, como descrito na linha 6.</p><p>Indentamos as linhas 7 e 8 para indicar que elas fazem parte</p><p>do escopo da exceção explicitada na linha 6.</p><p>Durante a execução do programa, ao executar a linha 4, o Python</p><p>encontra um erro, pois tentamos abrir o arquivo teste.txt para leitura,</p><p>mas ele não existe. Como este código está dentro do escopo do try, o</p><p>interpretador interrompe imediatamente a execução do código contido</p><p>nesse escopo e inicia a execução do código do except correspondente</p><p>ao erro FileNotFoundError. Ou seja, a execução salta da linha 4 para a</p><p>linha 7.</p><p>Na linha 7, imprimimos a mensagem "Arquivo inexistente" e, na linha 8,</p><p>imprimimos o problema encontrado, disponível na variável erro.</p><p>Observe a sequência de execução pelas saídas no console:</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 63/86</p><p>Início da execução do código do except.</p><p>Saiba que o Python só consegue tratar a exceção caso o erro esteja</p><p>mapeado em algum except. Se o interpretador não encontrar o except</p><p>adequado, será gerado um erro, e o programa será interrompido.</p><p>Um problema clássico que ocorre quando lidamos com arquivos é tentar</p><p>alterar o conteúdo de um arquivo quando ele está aberto em outro</p><p>programa. No caso do sistema operacional Windows 10, é lançada uma</p><p>exceção sobre permissão de acesso.</p><p>A seguir, vamos criar mais um except para tratar o caso de não termos</p><p>permissão para abrir um arquivo, mostrando o tratamento do problema</p><p>levantado no parágrafo anterior.</p><p>Neste exemplo, tentamos abrir o arquivo teste.pdf para escrita, linha 4,</p><p>porém ele já está aberto em outro programa:</p><p>Script 24 e sua saída.</p><p>Observe que o fluxo de execução do programa saltou da linha 4 para a</p><p>linha 10. Na linha 10, temos o início do tratamento da exceção</p><p>PermissionError, que foi justamente a exceção lançada pelo Python,</p><p>impressa pela linha 11, e que pode ser verificada no console.</p><p>O Python direciona o �uxo de execução para o trecho onde</p><p>é realizado o tratamento da exceção lançada.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 64/86</p><p>Vamos explorar mais operações referentes a arquivos e diretórios e</p><p>mostrar novas exceções que podem ser lançadas quando utilizamos</p><p>tais operações.</p><p>Fique atento!</p><p>Atividade 1</p><p>Em Python, a manipulação de arquivos pode resultar em diversos tipos</p><p>de exceções, que devem ser tratadas para evitar a interrupção do</p><p>programa de forma inesperada. Analise o código a seguir e responda à</p><p>questão.</p><p>Python </p><p>O que será exibido na tela se o arquivo dados.txt não existir no</p><p>diretório?</p><p>A Nenhuma mensagem será exibida.</p><p>B "Arquivo não encontrado."</p><p>C "Permissão negada."</p><p>D "Erro inesperado: {e}"</p><p>E</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 65/86</p><p>Parabéns! A alternativa B está correta.</p><p>Se o arquivo dados.txt não existir, o Python lançará uma exceção do</p><p>tipo FileNotFoundError. Como essa exceção está mapeada no except</p><p>correspondente, a mensagem "Arquivo não encontrado." será exibida na</p><p>tela.</p><p>Operações adicionais em arquivos</p><p>Conhecer as operações com arquivos em Python é fundamental para</p><p>qualquer desenvolvedor que lide com manipulação de dados. As</p><p>operações de remoção e renomeação são essenciais para automatizar</p><p>tarefas, organizar informações e manter a integridade dos dados.</p><p>Além disso, compreender como realizar essas operações de forma</p><p>eficiente e segura permite desenvolver aplicações mais robustas e</p><p>confiáveis, evitando problemas comuns como perda de dados e</p><p>interrupções inesperadas do programa.</p><p>Neste vídeo, veremos as operações de arquivos em Python, com foco na</p><p>remoção e renomeação. Aprenderemos a utilizar métodos específicos</p><p>para remover arquivos de forma segura e a renomear com eficácia.</p><p>Exploraremos cenários em que essas operações são úteis e</p><p>discutiremos boas práticas para lidar com manipulação de arquivos em</p><p>Python.</p><p>Além das opções para leitura e escrita em arquivos, o Python</p><p>disponibiliza um conjunto de operações adicionais, como renomear e</p><p>apagar arquivo, além de operações em diretórios, como listar arquivos</p><p>de diretórios, criar diretórios etc.</p><p>A partir de agora, apresentaremos algumas dessas operações.</p><p>Vamos iniciar pela operação de remover um arquivo, que está disponível</p><p>por meio da função remove do módulo os do Python.</p><p>A função remove tem a seguinte sintaxe:</p><p>Python </p><p>O programa será encerrado sem exibir nenhuma</p><p>mensagem.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 66/86</p><p>Nesse exemplo, temos o nome do módulo os, seguido de um ponto e o</p><p>nome da função remove. Como parâmetro, a função espera o caminho</p><p>para um arquivo. Para remover diretório, devemos utilizar outra função,</p><p>rmdir.</p><p>Veja a função remove na imagem abaixo. Iniciamos o script com a</p><p>importação do módulo os, na linha 1. Aqui vamos remover o arquivo</p><p>teste.txt, que se encontra no mesmo diretório do nosso script. Observe</p><p>a arvore de diretórios à esquerda:</p><p>Script 25 e sua saída.</p><p>Na linha 2, utilizamos a função remove, passando como argumento o</p><p>caminho do arquivo que desejamos remover. Como estamos no mesmo</p><p>diretório, utilizamos apenas o nome do arquivo. Pronto! Isso é suficiente</p><p>para remover um arquivo.</p><p>Dentre as exceções lançadas ao usar a função remove, destacamos as</p><p>seguintes:</p><p>FileNotFoundError</p><p>Ocorre quando o arquivo não existe.</p><p>PermissionError</p><p>Ocorre quando não temos permissão para alterar o arquivo.</p><p>IsADirectoryError</p><p>Ocorre quando tentamos remover um diretório usando a função remove,</p><p>em vez de rmdir.</p><p>Observe a saída do console, onde tudo ocorreu conforme esperado e</p><p>nenhuma exceção foi lançada.</p><p>A segunda operação, também muito comum, é a de renomear um</p><p>arquivo. Essa operação também está disponível no módulo os, mas por</p><p>meio da função rename.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 67/86</p><p>A função rename tem a seguinte sintaxe:</p><p>Python </p><p>Nesse exemplo, temos o nome do módulo os, seguido de um ponto e o</p><p>nome da função rename. Como parâmetro, a função espera o caminho</p><p>para o arquivo que desejamos renomear, origem, e o novo nome do</p><p>arquivo, destino.</p><p>Veja agora o exemplo em que descrevemos o uso dessa função:</p><p>Script 26 e sua saída.</p><p>Na linha 1, importamos o módulo os, no qual será utilizada a função</p><p>rename.</p><p>Na linha 4, chamamos a função rename com os parâmetros</p><p>teste_alfa.txt (origem) e teste_beta.txt (destino). Caso tudo ocorra bem,</p><p>ao final da operação, teremos apenas o arquivo destino.</p><p>Veja agora algumas exceções que podem ser lançadas quando</p><p>utilizamos a função rename. Não estamos tratando todas as opções</p><p>possíveis, mas apenas as mais comuns:</p><p>FileNotFoundError</p><p>Ocorre quando a origem não existe.</p><p>FileExistsError</p><p>Ocorre quando o arquivo de destino já existe.</p><p>PermissionError</p><p>Ocorre quando não temos permissão para alterar o arquivo de origem ou</p><p>para escrita do destino.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 68/86</p><p>Na imagem Script 26 e sua saída, veja a árvore de diretórios à esquerda.</p><p>Temos tanto o arquivo teste_alfa.txt quanto o arquivo teste_beta.txt.</p><p>Observe a execução do script pelo console e veja que ele saltou da linha</p><p>4 para a linha 13. Isso ocorreu porque, como o arquivo teste_beta.txt já</p><p>existia, a exceção FileExistsError foi lançada.</p><p>Dica</p><p>Para os casos em que desejamos renomear sobrescrevendo o arquivo</p><p>destino, caso ele exista, podemos utilizar a função replace, também do</p><p>módulo os.</p><p>Atividade 2</p><p>As operações de arquivos em Python, como renomear e remover, são</p><p>cruciais para a gestão eficiente de dados. Analise o código a seguir e</p><p>responda à questão.</p><p>Python </p><p>O que será exibido na tela se o arquivo.txt for, na verdade, um diretório?</p><p>A Nenhuma mensagem será exibida.</p><p>B "Arquivo não encontrado."</p><p>C "Permissão negada."</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 69/86</p><p>Parabéns! A alternativa D está correta.</p><p>Se arquivo.txt for um diretório, o Python lançará a exceção</p><p>IsADirectoryError. Como essa exceção está mapeada no except</p><p>correspondente, a mensagem "Não é possível remover, é um diretório"</p><p>será exibida na tela.</p><p>Manipulação de diretórios</p><p>Conhecer operações com diretórios em Python é essencial para a</p><p>organização e a gestão eficaz de dados em diversos projetos. Essas</p><p>operações incluem a criação, a remoção e a listagem de diretórios,</p><p>permitindo a estruturação adequada dos arquivos.</p><p>Além disso, o domínio dessas técnicas facilita a automação de tarefas,</p><p>melhora a manutenção do sistema e garante um ambiente de trabalho</p><p>mais organizado e eficiente, fundamental para o sucesso de qualquer</p><p>aplicação.</p><p>Neste vídeo, aprenderemos a criar, remover e listar diretórios, além de</p><p>tratar exceções comuns nessas operações. Além disso, veremos como</p><p>a manipulação de diretórios contribui para a organização e a robustez</p><p>do seu código, aplicando boas práticas para automatizar a gestão de</p><p>arquivos e diretórios em seus projetos.</p><p>Criando e removendo diretórios</p><p>Trabalhar com arquivos significa trabalhar com diretórios. Vejamos as</p><p>principais funcionalidades relacionadas à manipulação de diretórios em</p><p>Python começando pela criação e remoção de um diretório.</p><p>Para criar um diretório, utilizamos a função mkdir do módulo os,</p><p>enquanto, para remover um diretório, utilizamos a função rmdir, também</p><p>do módulo os.</p><p>A sintaxe dessas duas funções são as seguintes:</p><p>Python </p><p>D "Não é possível remover, é um diretório."</p><p>E "Erro inesperado: {e}"</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 70/86</p><p>Python </p><p>Nesse exemplo, temos o nome do módulo os, seguido de um ponto e o</p><p>nome da função mkdir ou rmdir. Como parâmetro, a função espera o</p><p>caminho para o diretório.</p><p>Veja agora como utilizamos essas duas funções:</p><p>Scripts 28 e 29 e suas respectivas saídas.</p><p>No script 28, importamos o módulo os na linha 1 e, na linha 4, utilizamos</p><p>a função mkdir(“meu_diretorio”). O diretório</p><p>meu_diretorio foi criado na</p><p>mesma pasta onde o script28 se encontra. Considere as seguintes</p><p>condições:</p><p>Caso não tenhamos permissão para criar o diretório, será lançada a</p><p>exceção PermissionError.</p><p>Caso o diretório já exista, a exceção FileExistsError é lançada.</p><p>No script29, na linha 4, utilizamos a função rmdir para remover o</p><p>diretório meu_diretorio. Considere as seguintes condições:</p><p>Caso não tenhamos permissão para remover o diretório, será</p><p>lançada a exceção PermissionError.</p><p>Caso o diretório não exista, a exceção FileNotFoundError é lançada.</p><p>Para os casos em que o diretório a ser removido não esteja vazio, será</p><p>lançada a exceção OSError. Essa exceção é mais abrangente.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 71/86</p><p>Não temos como garantir, a princípio, que a exceção</p><p>lançada ocorre especi�camente pelo fato de o diretório</p><p>não estar vazio.</p><p>Nessas situações, precisamos analisar mais o erro, principalmente o</p><p>seu número, para verificar o que realmente aconteceu.</p><p>O número do erro está disponível no atributo errno do</p><p>objeto erro.</p><p>Os códigos dos possíveis erros estão no módulo errno do Python e</p><p>podem ser utilizados no tratamento das exceções para descobrir o que</p><p>realmente deu errado.</p><p>Veja esse problema mais de perto:</p><p>Script 30 e saída.</p><p>Temos o script 30, sua saída e modulo errno.py.</p><p>Importação dos módulos os e errno.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 72/86</p><p>Importamos, à esquerda, no script30, os módulos os e errno</p><p>nas linhas 1 e 2.</p><p>Tentativa de remoção do diretório meu_diretorio.</p><p>Tentamos remover, na linha 5, o diretório meu_diretorio</p><p>utilizando a função rmdir. Como o diretório não está vazio, a</p><p>exceção OSError é lançada, e a execução do programa salta</p><p>para a linha 8.</p><p>Impressão do número do erro.</p><p>Imprimimos, na linha 8, o número do erro por meio do atributo</p><p>errno da variável erro. Observe que o valor impresso foi 41. O</p><p>erro 41 faz parte da numeração interna de erros do Python, que</p><p>pode ser verificado no modulo errno à direita da imagem,</p><p>mapeado como ENOTEMPTY (não vazio).</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 73/86</p><p>Comparação entre o erro gerado e o código do erro.</p><p>Comparamos, na linha 9, o erro gerado pelo programa com o</p><p>código do erro ENOTEMPTY (erro 41). Caso o resultado da</p><p>comparação seja verdadeiro, teremos certeza de que o erro</p><p>ocorreu, pois o diretório não está vazio. Caso contrário,</p><p>precisaremos analisá-lo novamente. O WinError 145 é o erro</p><p>nativo que o Windows retornou. Esse erro foi mapeado pelo</p><p>Python para o erro 41.</p><p>Como a exceção OSError é mais abrangente que as outras exceções que</p><p>estudamos, ela deve ficar por último. Caso contrário, nunca</p><p>alcançaremos as exceções mais específicas.</p><p>Listando conteúdo de diretórios</p><p>Outra tarefa muito comum quando estamos tratando com arquivos é</p><p>listar os arquivos presentes em um diretório.</p><p>Para isso, podemos utilizar a função scandir do módulo os. Sua sintaxe</p><p>é a seguinte:</p><p>Python </p><p>Nesse exemplo, temos o nome do módulo os, seguido de um ponto e o</p><p>nome da função scandir. Como parâmetro, a função espera o caminho</p><p>para o diretório.</p><p>Como resultado, teremos um iterável (iterator) que retorna objetos do</p><p>tipo os.DirEntry, que podem ser arquivos ou diretórios. Dentre os</p><p>atributos e métodos desse tipo de objetos, destacamos:</p><p>Name</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 74/86</p><p>Nome do diretório ou arquivo.</p><p>Path</p><p>Caminho completo do diretório ou arquivo.</p><p>is_dir()</p><p>Retorna verdadeiro se o objeto é um diretório.</p><p>is_�le()</p><p>Retorna verdadeiro se o objeto é um arquivo.</p><p>stat()</p><p>Retorna alguns atributos do arquivo ou diretório, como tamanho.</p><p>Agora veja como utilizar essa função:</p><p>Script 31 e saída.</p><p>Temos o script 31 e sua saída. Vamos percorrer os arquivos e</p><p>diretórios da pasta meu_diretorio. A árvore de diretórios pode</p><p>ser verificada à esquerda da imagem.</p><p>Importação dos módulos os.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 75/86</p><p>Importamos, na linha 1, o módulo os, onde se encontra a</p><p>função scandir.</p><p>Aplicação da função scandir.</p><p>Utilizamos, na linha 4, a função scandir utilizando o diretório</p><p>“meu_diretorio” como argumento. Armazenamos o retorno</p><p>dessa função na variável entradas.</p><p>Iteração de cada entrada.</p><p>Iteramos, na linha 6, cada entrada e, da linha 7 a 13,</p><p>imprimimos algumas de suas propriedades.</p><p>Saída no console à direita.</p><p>Observe a saída no console à direita.</p><p>Atividade 3</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 76/86</p><p>Em Python, as operações com diretórios são fundamentais para a</p><p>organização e manipulação de arquivos. Analise as afirmações sobre</p><p>operações com diretórios e marque a alternativa correta.</p><p>Parabéns! A alternativa D está correta.</p><p>A função os.mkdir(caminho) é usada para criar um novo diretório,</p><p>enquanto a função os.rmdir(caminho) é utilizada para remover um</p><p>diretório vazio. É importante entender essas operações para gerenciar</p><p>a estrutura de diretórios corretamente. As outras opções apresentam</p><p>funções ou usos incorretos.</p><p>Exceções e o módulo "os"</p><p>A capacidade de ler, processar e escrever dados de maneira eficiente é</p><p>importante para inúmeras aplicações, como processamento de dados,</p><p>geração de relatórios e automação de tarefas.</p><p>Além disso, o tratamento de exceções garante que seu código seja</p><p>robusto e capaz de lidar com situações inesperadas, como arquivos</p><p>inexistentes ou falta de permissões, aumentando a confiabilidade e a</p><p>resiliência de suas aplicações.</p><p>A</p><p>Para criar um novo diretório, utilizamos a função</p><p>os.makedir(caminho), e para removê-lo, usamos a</p><p>função os.removedir(caminho).</p><p>B</p><p>A função os.listdir(caminho) é usada para criar uma</p><p>lista de todos os arquivos e subdiretórios em um</p><p>diretório especificado.</p><p>C</p><p>A função os.remove(caminho) é usada para remover</p><p>diretórios e a função os.rmdir(caminho) é usada para</p><p>remover arquivos.</p><p>D</p><p>A função os.mkdir(caminho) cria um novo diretório e a</p><p>função os.rmdir(caminho) remove um diretório vazio.</p><p>E</p><p>A função os.rename(caminho_antigo, caminho_novo)</p><p>só pode ser usada para renomear arquivos, não</p><p>diretórios.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 77/86</p><p>A prática de ler um arquivo de texto, adicionar um cabeçalho e escrever</p><p>o conteúdo em um novo arquivo permite aos desenvolvedores</p><p>entenderem a importância de manipular arquivos de forma segura.</p><p>Compreender como tratar exceções específicas, como</p><p>FileNotFoundError e PermissionError, ajuda a criar scripts que não</p><p>falhem inesperadamente, proporcionando uma experiência de usuário</p><p>mais estável e profissional.</p><p>Ao dominar essas técnicas, você poderá criar soluções automatizadas</p><p>que requerem manipulação de arquivos, essenciais em diversos campos</p><p>da tecnologia.</p><p>Neste vídeo, veremos uma situação prática para tratamento de</p><p>exceções em leitura e escrita de arquivos. Adicionalmente,</p><p>empregaremos o módulo "os", presente na biblioteca padrão do Python</p><p>e amplamente utilizado para referenciar caminhos no sistema</p><p>operacional.</p><p>Situação-problema</p><p>Você foi contratado por uma empresa para desenvolver um script em</p><p>Python que automatize a organização de arquivos de texto. A tarefa</p><p>envolve ler o conteúdo de arquivos, processar essas informações,</p><p>escrever em novos arquivos e tratar exceções que possam surgir, como</p><p>arquivos inexistentes ou falta de permissões.</p><p>Tarefa</p><p>Implemente um script em Python que realize as seguintes operações:</p><p>1. Leia o conteúdo de um arquivo de texto.</p><p>2. Escreva o conteúdo lido em um</p><p>novo arquivo, adicionando uma</p><p>linha de cabeçalho.</p><p>3. Trate possíveis exceções durante as operações, exibindo</p><p>mensagens informativas ao usuário.</p><p>Resolução</p><p>Passo 1: Preparação</p><p>1. Crie um diretório de trabalho e coloque alguns arquivos de texto de</p><p>exemplo (.txt) nesse diretório.</p><p>Passo 2: Estrutura do código</p><p>1. Importe o módulo necessário</p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 78/86</p><p>Passo 3: Função para ler e escrever arquivos</p><p>1. Crie uma função para ler o conteúdo de um arquivo e escrever em</p><p>um novo arquivo com uma linha de cabeçalho:</p><p>Python </p><p>Passo 4: Script principal</p><p>1. No script principal, defina os arquivos de origem e destino e chame</p><p>a função criada:</p><p>Python </p><p>Passo 5: Teste e validação</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 79/86</p><p>1. Crie um arquivo de texto chamado arquivo_origem.txt no diretório</p><p>de trabalho e insira algum conteúdo.</p><p>2. Execute o script e verifique se o conteúdo do arquivo_origem.txt foi</p><p>escrito no arquivo_destino.txt com a linha de cabeçalho</p><p>adicionada.</p><p>3. Simule diferentes exceções (como renomear o arquivo para que</p><p>não seja encontrado ou remover permissões) para verificar se o</p><p>tratamento de exceções está funcionando corretamente.</p><p>Resultado esperado</p><p>O script deve ler o conteúdo do arquivo arquivo_origem.txt, escrever</p><p>esse conteúdo em arquivo_destino.txt com uma linha de cabeçalho, e</p><p>exibir mensagens informativas para qualquer exceção encontrada</p><p>durante o processo.</p><p>Atividade 4</p><p>Considere o seguinte código em Python utilizado para abrir um arquivo</p><p>para leitura utilizando o módulo "os".</p><p>Python </p><p>O que aconteceria se o aluno substituísse a utilização do os.path.join</p><p>por open("diretorio_trabalho/arquivo_origem.txt", "r") para definir o</p><p>caminho do arquivo?</p><p>A</p><p>O código sempre funcionaria corretamente, sem</p><p>nenhuma diferença observável.</p><p>B</p><p>O código geraria um erro de sintaxe, pois open não</p><p>pode ser usado para concatenar strings.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 80/86</p><p>Parabéns! A alternativa D está correta.</p><p>Se substituir os.path.join por open("diretorio/arquivo"), o código</p><p>funcionaria apenas em sistemas Unix, onde o separador de diretórios é</p><p>/. Em sistemas Unix, a barra (/) é usada para definir caminhos de</p><p>diretórios. A abordagem multiplataforma é usar os.path.join para</p><p>garantir a compatibilidade com diferentes sistemas operacionais.</p><p>Organizando arquivos de acordo com</p><p>suas extensões</p><p>Ao mover arquivos para diretórios específicos com base em suas</p><p>extensões, você está aplicando conceitos de organização e automação,</p><p>essenciais para a gestão eficiente de dados em projetos reais.</p><p>Além disso, o uso do módulo shutil para operações de movimentação e</p><p>o módulo os para verificação e criação de diretórios são práticas</p><p>comuns em tarefas de administração de sistemas e desenvolvimento de</p><p>software.</p><p>Ao mover arquivos, independentemente da biblioteca ou do módulo</p><p>utilizados, devemos dar atenção ao tratamento de exceções, garantindo</p><p>que seu código seja capaz de lidar com situações inesperadas, como</p><p>diretórios inexistentes ou falta de permissões.</p><p>Essa prática prepara você para enfrentar desafios mais complexos em</p><p>ambientes de Front, onde a integridade e a organização dos dados são</p><p>prioritárias. Ao compreender e implementar essas operações, você</p><p>melhora a eficiência e a confiabilidade dos seus scripts, facilitando a</p><p>manutenção e a escalabilidade de suas aplicações.</p><p>Neste vídeo, será demonstrada uma situação prática na qual é</p><p>necessário mover arquivos para diretórios específicos com base em</p><p>suas extensões, utilizando os módulos os e shutil. Além disso,</p><p>reforçaremos os conceitos de criação de diretórios, movimentação de</p><p>arquivos e tratamento de exceções.</p><p>C</p><p>O código tentaria abrir um arquivo chamado</p><p>"diretorio/arquivo" e falharia porque o arquivo não</p><p>existe.</p><p>D</p><p>O código não funcionaria em sistemas Unix, em que o</p><p>separador de diretórios é /.</p><p>E</p><p>O código funcionaria apenas em sistemas Windows, em</p><p>que o separador de diretórios é .</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 81/86</p><p>Uma biblioteca pública digitaliza seus documentos e salva os arquivos</p><p>em um diretório de trabalho. Para facilitar a organização, você foi</p><p>contratado para desenvolver um script em Python capaz de mover</p><p>automaticamente esses arquivos para subdiretórios específicos com</p><p>base em suas extensões. O objetivo é garantir que arquivos PDF sejam</p><p>movidos para uma pasta pdf, documentos de texto para uma pasta txt e</p><p>imagens para uma pasta img.</p><p>Tarefa</p><p>Implemente um script em Python que realize as seguintes operações:</p><p>1. Verifique se os diretórios de destino (pdf, txt, img) existem; caso</p><p>contrário, crie-os.</p><p>2. Mova os arquivos do diretório de trabalho para os diretórios</p><p>correspondentes com base em suas extensões.</p><p>3. Trate possíveis exceções durante as operações, exibindo</p><p>mensagens informativas ao usuário.</p><p>Roteiro de prática</p><p>Passo 1: Preparação</p><p>1. Crie um diretório de trabalho e adicione alguns arquivos de</p><p>exemplo com diferentes extensões (.pdf, .txt, .jpg) nesse diretório.</p><p>Passo 2: Estrutura do código</p><p>1. Importe os módulos necessários:</p><p>Python </p><p>O módulo shutil</p><p>Este módulo em Python oferece várias operações de alto nível em</p><p>arquivos e coleções de arquivos. Ele é especialmente útil para copiar,</p><p>mover, renomear e remover arquivos e diretórios. A função shutil.move é</p><p>utilizada para mover um arquivo ou diretório de um local para outro,</p><p>sendo uma ferramenta essencial para a organização de arquivos.</p><p>Passo 3: Função para criar diretórios</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 82/86</p><p>1. Crie uma função para verificar se os diretórios existem e, se não,</p><p>criá-los:</p><p>Python </p><p>Passo 4: Função para mover arquivos</p><p>1. Crie uma função para mover os arquivos para os diretórios</p><p>correspondentes com base em suas extensões:</p><p>Python </p><p>Passo 5: Script principal</p><p>1. No script principal, defina o diretório de trabalho e chame as</p><p>funções criadas:</p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 83/86</p><p>Passo 6: Teste e validação</p><p>1. Execute o script e verifique se os arquivos foram movidos para os</p><p>diretórios corretos (pdf, txt, jpg).</p><p>2. Simule diferentes exceções (como alterar permissões ou usar</p><p>arquivos inexistentes) para verificar se o tratamento de exceções</p><p>está funcionando corretamente.</p><p>Resultado esperado</p><p>O script deve criar os diretórios pdf, txt, e jpg se não existirem, mover os</p><p>arquivos para os diretórios correspondentes com base em suas</p><p>extensões e exibir mensagens informativas para qualquer exceção</p><p>encontrada durante o processo.</p><p>Atividade 5</p><p>O módulo shutil em Python é amplamente utilizado para operações de</p><p>manipulação de arquivos, como mover e copiar. Considere o seguinte</p><p>código que tenta mover arquivos para diretórios específicos com base</p><p>em suas extensões.</p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 84/86</p><p>Qual das opções a seguir é necessária para que o código funcione</p><p>corretamente se os diretórios de destino não existirem inicialmente?</p><p>Parabéns! A alternativa D está correta.</p><p>Para que o código funcione corretamente, é necessário criar os</p><p>diretórios de destino com os.makedirs(diretorio_destino) antes de</p><p>tentar mover os arquivos, garantindo que o diretório exista. Sem essa</p><p>criação, shutil.move falhará se o diretório de destino não existir.</p><p>O que você aprendeu neste</p><p>conteúdo?</p><p>Operações para abrir e fechar arquivos.</p><p>Operações de leitura e escrita em arquivos.</p><p>Operações para renomear e remover arquivos.</p><p>Manipulação e formatação de strings.</p><p>Tratamento de exceções.</p><p>Criação e remoção de diretórios.</p><p>A Alterar shutil.move para shutil.copy.</p><p>B Remover a linha os.path.isfile(caminho_arquivo).</p><p>C</p><p>Adicionar uma verificação de permissões antes de</p><p>shutil.move.</p><p>D</p><p>Garantir que os.makedirs(diretorio_destino) seja</p><p>chamado antes de shutil.move.</p><p>E Remover a verificação de extensão dos arquivos.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 85/86</p><p>Explore +</p><p>Confira agora o que separamos especialmente para você!</p><p>Além de manipular arquivos de texto, o Python permite a leitura e escrita</p><p>de arquivos binários. O tratamento de arquivos compirmidos é um</p><p>exemplo disso. O Python possui um módulo interno chamado gzip que</p><p>permite a leitura e escrita desse tipo de arquivo. Pesquise sobre o</p><p>módulo gzip e verifique os comandos de manipulação existentes.</p><p>Outro tipo de arquivo binário é a imagem. Apesar de o Python não ter um</p><p>módulo interno que suporte manipulação de imagens, existem</p><p>bibliotecas gratuitas que dão esse suporte, como Pillow e OpenCV.</p><p>Pesquise sobre essas bibliotecas e verifique os recursos disponíveis</p><p>para a manipulação de imagens.</p><p>Referências</p><p>Python. Python Software Foundation. Consultado em meio eletrônico</p><p>em: 10 ago. 2020.</p><p>Material para download</p><p>Clique no botão abaixo para fazer o download do</p><p>conteúdo completo em formato PDF.</p><p>Download material</p><p>O que você achou do conteúdo?</p><p>Relatar problema</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 86/86</p><p>javascript:CriaPDF()</p><p>da função open, e cada modo é</p><p>representado por uma string.</p><p>Os principais modos são:</p><p>Python </p><p>Python </p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 8/86</p><p>O modo padrão da função open é o modo leitura (“r”).</p><p>Esses modos podem ser combinados e para informar que desejamos ler</p><p>e escrever em um arquivo, utilizamos a string “r+”, por exemplo.</p><p>O Python também nos permite diferenciar arquivos texto de arquivos</p><p>binários, como uma imagem, por exemplo. Para informar que desejamos</p><p>abrir um arquivo binário, adicionamos a string “b” ao modo, ficando “rb”,</p><p>“wb” e “ab”.</p><p>A tabela abaixo resume os modos de acesso a arquivos:</p><p>Caractere Significado</p><p>'r' Abre o arquivo para leitura (default).</p><p>'w'</p><p>Abre o arquivo para escrita, truncando</p><p>o arquivo primeiro.</p><p>'x'</p><p>Cria um arquivo para escrita e falha,</p><p>caso ele exista.</p><p>'a'</p><p>Abre o arquivo para escrita,</p><p>acrescentando conteúdo ao final do</p><p>arquivo, caso ele exista.</p><p>'b' Modo binário.</p><p>'t' Modo texto (default).</p><p>'+'</p><p>Abre o arquivo para atualização</p><p>(leitura ou escrita).</p><p>Tabela: Modos de abertura de arquivos em Python.</p><p>Adaptada de Python (2020).</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 9/86</p><p>Atividade 1</p><p>Na programação com Python, é comum utilizar funções específicas</p><p>para manipular arquivos de dados. Quando precisamos manipular</p><p>arquivos em Python, qual função é usada para abrir um arquivo para</p><p>leitura? Considere a localização padrão do arquivo como sendo o</p><p>mesmo diretório do script.</p><p>Parabéns! A alternativa B está correta.</p><p>A função correta para abrir um arquivo para leitura em Python é open(),</p><p>com o modo "r" especificado como segundo argumento para indicar</p><p>que o arquivo é aberto em modo de leitura. As outras alternativas ou</p><p>não usam a função correta ou utilizam argumentos incorretos.</p><p>Atributos do objeto tipo arquivo</p><p>Compreender os atributos de um objeto do tipo arquivo em Python é</p><p>imprescindível para o desenvolvimento de software eficiente e seguro.</p><p>Esses atributos, como name, mode e closed, fornecem informações</p><p>essenciais sobre o estado atual do arquivo, permitindo que os</p><p>desenvolvedores gerenciem melhor os recursos do sistema.</p><p>Saber quando um arquivo está aberto ou fechado, por exemplo, ajuda a</p><p>prevenir erros comuns, como tentativas de acesso a um arquivo já</p><p>fechado, garantindo a integridade dos dados e a estabilidade do</p><p>aplicativo.</p><p>A file.open("dados.txt")</p><p>B open("dados.txt", "r")</p><p>C read("dados.txt")</p><p>D openFile("dados.txt", "read")</p><p>E getFile("dados.txt")</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 10/86</p><p>Neste vídeo, você vai explorar os atributos essenciais de objetos do tipo</p><p>arquivo em Python, como name, mode e closed. Será demonstrado</p><p>como esses atributos influenciam a manipulação de arquivos, evitando</p><p>erros comuns e otimizando o gerenciamento de recursos.</p><p>O objeto do tipo arquivo contém alguns atributos importantes, como</p><p>name, mode e closed, veja:</p><p>Script2, sua saída e arquivo dados.txt.</p><p>Temos o script2, sua saída e arquivo dados.txt.</p><p>Abertura do arquivo pela função open</p><p>Abrimos, na linha 1, o arquivo utilizando a função open. Como</p><p>não explicitamos o parâmetro mode, o arquivo será aberto no</p><p>modo leitura (“r”).</p><p>Impressão do atributo name.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 11/86</p><p>Imprimimos, na linha 3, o atributo name do objeto arquivo. Esse</p><p>atributo contém o nome do arquivo.</p><p>Impressão do atributo name.</p><p>Imprimimos, na linha 4, o atributo mode do objeto arquivo. Esse</p><p>atributo contém o modo de acesso do arquivo (r, w, a, rb ...).</p><p>Impressão do atributo closed.</p><p>Imprimimos, na linha 5, o atributo closed do objeto arquivo.</p><p>Essa atributo serve para verificar se um arquivo está ou não</p><p>fechado.</p><p>Os valores de cada atributo podem ser verificados no console</p><p>abaixo da imagem.</p><p>Fechando um arquivo</p><p>Após realizar a operação desejada no arquivo, precisamos liberá-lo. Para</p><p>isso, utilizamos o método close(), que libera a memória alocada pelo</p><p>interpretador e o uso do arquivo por outros programas, por exemplo.</p><p>Agora, vamos utilizar o script do exemplo anterior como base e</p><p>adicionar uma chamada ao método close() e verificar o atributo closed</p><p>novamente:</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 12/86</p><p>Script3, sua saída e seu arquivo dados.txt.</p><p>Em relação ao script do exemplo anterior, adicionamos, na linha 7, uma</p><p>chamada ao método close() do objeto arquivo.</p><p>Na linha 9, imprimimos novamente a propriedade closed, onde podemos</p><p>observar que seu valor agora é True.</p><p>Lendo o conteúdo de um arquivo</p><p>Agora que já sabemos abrir e fechar um arquivo, vamos ver as formas</p><p>de ler seu conteúdo.</p><p>O Python disponibiliza os seguintes métodos para leitura do conteúdo</p><p>de um arquivo-texto:</p><p>Read()</p><p>Retorna todo o conteúdo de um arquivo como uma única string.</p><p>Readline()</p><p>Retorna uma linha de arquivo, incluindo caracteres de final (\n ou \r\n), e</p><p>avança o cursor para a próxima.</p><p>Readlines()</p><p>Retorna uma lista em que cada item da lista é uma linha do arquivo.</p><p>Abaixo, temos três scripts, em que cada um utiliza um dos métodos</p><p>descritos anteriormente para leitura do arquivo. Observe que</p><p>explicitamos o modo de operação como leitura (“r”):</p><p>Três scripts</p><p>Em cada um dos scripts, vamos abrir o mesmo arquivo dados.txt dos</p><p>exemplos anteriores, ler o conteúdo, verificar o tipo de conteúdo retornado</p><p>por cada método de leitura e imprimir o valor canônico (real) do conteúdo</p><p>lido.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 13/86</p><p>Scripts 4, 5 e 6 e cada uma de suas saídas.</p><p>Temos os scripts 4, 5 e 6 e suas respectivas saídas.</p><p>Abertura do arquivo pelo método read().</p><p>Abrimos, no script4.py, mais à esquerda, abrimos o arquivo na</p><p>linha 1 e, na linha 3, utilizamos o método read() do objeto</p><p>arquivo para ler o conteúdo de dados.txt e armazená-lo na</p><p>variável conteudo.</p><p>Impressão do atributo name.</p><p>Verificamos, na linha 5, o tipo do conteúdo retornado pelo</p><p>método read(), utilizando a função interna type. Conforme</p><p>exibido no console, a variável conteudo é um objeto do tipo str</p><p>(string).</p><p>Impressão do atributo mode.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 14/86</p><p>Imprimimos, na linha 8, o conteúdo em si, porém utilizamos a</p><p>função interna repr para mostrar o conteúdo real contido da</p><p>variável conteudo. Observe que foi retornado todo o texto</p><p>existente no arquivo dados.txt, que também pode ser verificado</p><p>no console.</p><p>No script5.py, seguimos os mesmos passos do script anterior, porém,</p><p>na linha 3, utilizamos o método readline().</p><p>Na linha 5, verificamos que o tipo do conteúdo retornado pelo método</p><p>readline() também é um objeto do tipo str (string).</p><p>Na linha 8, imprimimos a representação do conteúdo que contém</p><p>apenas a primeira linha do arquivo dados.txt (incluindo o caractere de</p><p>final de linha \n). Isso aconteceu porque, quando abrimos o arquivo</p><p>utilizando o modo leitura (‘r’), o cursor interno de leitura fica posicionado</p><p>no início do arquivo.</p><p>Se chamarmos novamente o método readline(), linha 10, será retornado</p><p>à próxima linha do arquivo, que foi impressa na linha 13. Confira a saída</p><p>do script 5 no console abaixo dele; seguimos os mesmos passos do</p><p>script anterior, porém, na linha 3, utilizamos o método readline().</p><p>Veja tudo isso na imagem a seguir:</p><p>Script5 e sua saída.</p><p>No script6.py, seguimos novamente os mesmos passos, mas, desta vez,</p><p>utilizamos o método readlines().</p><p>Na linha 5, verificamos que o tipo do conteúdo retornado pelo método</p><p>readlines() é um objeto do tipo list</p><p>(lista).</p><p>Na linha 8, imprimimos o conteúdo retornado, que é uma lista na qual</p><p>cada item é uma linha do arquivo. Veja a saída desse script no console</p><p>abaixo dele.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 15/86</p><p>Além dos três métodos já apresentados, os objetos do tipo arquivo são</p><p>iteráveis. Com isso, podemos utilizar o laço for diretamente sobre os</p><p>objetos desse tipo. Veja tudo isso na imagem a seguir:</p><p>Script6 e sua saída.</p><p>Veja agora como iterar diretamente sobre um arquivo:</p><p>Na linha 1, abrimos o arquivo da mesma maneira que fizemos nos</p><p>exemplos anteriores.</p><p>Na linha 4, utilizamos o laço for para iterar diretamente sobre a variável</p><p>arquivo. Para cada iteração, recebemos uma nova linha do arquivo,</p><p>disponibilizada na variável linha, impressa na linha 5. Observe a saída do</p><p>console abaixo da imagem:</p><p>Script7 e sua saída.</p><p>Quando precisamos abrir um arquivo muito grande, é inviável utilizar os</p><p>métodos read e readlines, pois eles retornam todo o conteúdo do</p><p>arquivo de uma só vez, seja na forma de string, seja na forma de lista.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 16/86</p><p>Isso pode consumir todos os recursos do computador, travando seu</p><p>programa.</p><p>Nesses casos, precisamos chamar o método readline inúmeras vezes</p><p>até o final do arquivo ou iterar diretamente sobre o objeto do tipo</p><p>arquivo.</p><p>Após utilizar qualquer um dos métodos para leitura do arquivo</p><p>apresentado, não podemos utilizá-los novamente. Isso acontece porque</p><p>o cursor estará posicionado ao final do arquivo, e as chamadas aos</p><p>métodos read, readline ou readlines retornarão vazias.</p><p>Depois de conhecer a resposta correta, confira o exemplo do script8,</p><p>onde exploramos na prática essa situação:</p><p>Script8 e sua saída.</p><p>Vejamos agora o que se sucedeu em cada linha a seguir:</p><p> Na linha 1</p><p>Abrimos o arquivo em modo leitura.</p><p> Na linha 3</p><p>Lemos todo seu conteúdo utilizando o método read,</p><p>que é impresso na linha 5. Veja no console à direita</p><p>da imagem.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 17/86</p><p>Para contornar esse problema, fechamos e abrimos o arquivo</p><p>novamente, linhas 11 e 14, respectivamente. Na linha 16, utilizamos</p><p>novamente o método read e imprimimos o conteúdo retornado na linha</p><p>18. Observe que, mais uma vez, conseguimos acessar todo o conteúdo</p><p>do arquivo.</p><p>Para demonstrar a utilização do método seek, no mesmo arquivo que já</p><p>estava aberto, arquivo_reaberto, utilizamos o método seek(0), linha 20.</p><p>Imprimimos mais uma vez o conteúdo correto do arquivo na linha 23.</p><p>Toda a sequência pode ser acompanhada pelo console.</p><p>Atenção!</p><p>Todos os três métodos apresentados aceitam como parâmetro a</p><p>quantidade de bytes que desejamos ler.</p><p>O valor padrão para esse parâmetro é -1, o que corresponde a todo o</p><p>arquivo.</p><p>Escrevendo conteúdo em um arquivo</p><p>Confira agora como escrever conteúdo em um arquivo a partir da função</p><p>open. Vamos lá!</p><p>A primeira modificação é alterar o modo de acesso ao arquivo. Para</p><p>escrita de texto, podemos utilizar o modo w (write) ou o modo a</p><p>(append), a seguir:</p><p>O modo w abre o arquivo para escrita, truncando o arquivo em</p><p>primeiro lugar. Caso ele não exista, será criado um.</p><p>O modo a abre o arquivo para escrita, acrescentando conteúdo ao</p><p>final dele, caso ele exista; do contrário, será criado um arquivo.</p><p>O Python disponibiliza dois métodos para escrita de conteúdo em um</p><p>arquivo texto, para o modo w e para o modo a. Os métodos write e</p><p>writelines são descritos abaixo:</p><p>Write (texto)</p><p>Escreve todo o conteúdo passado como parâmetro no arquivo.</p><p>Writelines (iterável)</p><p> Na linha 7</p><p>Utilizamos o método read para ler novamente o</p><p>conteúdo do arquivo e atribuímos o valor retornado</p><p>à variável conteudo_releitura. Na linha 9,</p><p>imprimimos o conteúdo dessa variável, que,</p><p>conforme exibido no console, é uma string vazia ('').</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 18/86</p><p>Escreve cada item do iterável (exemplo: lista) no arquivo.</p><p>No exemplo a seguir, vamos criar dois scripts para mostrar o uso do</p><p>modo w. No primeiro, script9, vamos utilizar o método write. No</p><p>segundo, script10, vamos utilizar o método writelines.</p><p>Scripts 9 e 10 e suas saídas.</p><p>Temos os scripts 9 e 10 e suas respectivas saídas.</p><p>Abertura do arquivo dados_write.txt.</p><p>Abrimos, no script9, o arquivo dados_write.txt para escrita</p><p>utilizando o modo w na linha 1.</p><p>Escrita dos conteúdos pelo método write.</p><p>Escrevemos os conteúdos utilizando o método write, conforme</p><p>linhas 2 e 3, e fechamos o arquivo, como exposto na linha 4.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 19/86</p><p>Resultado do arquivo dados_write.txt.</p><p>Observe como ficou o arquivo dados_write.txt, abaixo do</p><p>script9, após a execução desse script.</p><p>Resultado do arquivo dados_write.txt.</p><p>Criamos, no script10, uma lista chamada linhas na linha 1.</p><p>Abrimos o arquivo dados_write.txt para escrita na linha 4,</p><p>utilizando o mesmo modo de acesso ao arquivo, modo w. Para</p><p>escrever o conteúdo da lista linhas no arquivo, utilizamos o</p><p>método writelines, linha 5.</p><p>Resultado do conteúdo do arquivo dados_writelines.txt.</p><p>Verifique também o conteúdo do arquivo dados_writelines.txt</p><p>após a execução do script, abaixo do script10 na imagem.</p><p>Fique atento às seguintes orientações:</p><p>O Python não insere quebra de linha ('\n') entre os elementos da</p><p>lista. Precisamos fazer isso manualmente!</p><p>Como o modo w trunca o arquivo, ou seja, remove todo o conteúdo</p><p>do arquivo, caso ele exista, podemos executar esses scripts</p><p>repetidas vezes e, ainda assim, o resultado será sempre o mesmo.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 20/86</p><p>No próximo exemplo, vamos mostrar como utilizar o modo append (a)</p><p>para adicionar conteúdo a um arquivo já existente.</p><p>Para isso, vamos abrir o arquivo dados_write.txt, criado pelo script9,</p><p>utilizando o modo a. Utilizamos esse modo para acrescentar conteúdo a</p><p>um arquivo. Confira o próximo script:</p><p>Script 11 e saída.</p><p>Temos o script11 e sua saída.</p><p>Abertura do arquivo dados_write.txt pelo append (a).</p><p>Abrimos, em primeiro lugar, na linha 1, o arquivo</p><p>dados_write.txt utilizando o modo escrita a (append).</p><p>Utilização do método write.</p><p>Utilizamos, na linha 3, o método write para acrescentar o texto</p><p>"\nConteúdo adicional." ao final do arquivo dados_write.txt.</p><p>Fechamento do arquivo.</p><p>Fechamos, na linha 5, o arquivo.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 21/86</p><p>Resultado do conteúdo final do arquivo.</p><p>Observe como ficou o conteúdo final do arquivo à direita da</p><p>imagem, onde a nova frase foi posicionada corretamente ao</p><p>final do arquivo.</p><p>Boas práticas</p><p>Ao lidar com arquivos, devemos utilizar a palavra reservada with,</p><p>disponibilizada pelo Python. Ela garante que o arquivo será fechado</p><p>adequadamente após utilizarmos o arquivo, não sendo necessário</p><p>chamar o método close explicitamente. A sintaxe de utilização do with é:</p><p>Python </p><p>Iniciamos com a palavra reservada with, seguida da função open, a</p><p>palavra reservada as, um nome de variável que receberá o objeto do tipo</p><p>arquivo e dois pontos. Todo o código indentado posteriormente está</p><p>dentro do contexto do with, no qual o arquivo referenciado pela variável</p><p>nome estará disponível.</p><p>Veja como utilizar o with no exemplo a seguir. Clique nas setas e</p><p>acompanhe:</p><p>Script 12 e saída.</p><p>Temos o script12 e sua saída.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 22/86</p><p>Abertura do arquivo dados.txt no modo</p><p>leitura.</p><p>Utilizamos a sintaxe do with, na linha 3, e o arquivo dados.txt é</p><p>aberto no modo leitura, atribuído à variável arquivo. Esta</p><p>variável está disponível em todo o escopo do with, linhas 4, 5 e</p><p>6.</p><p>Iteração sobre o conteúdo do arquivo.</p><p>Iteramos, nas linhas 4 e 5, sobre o conteúdo do arquivo e</p><p>imprimimos linha por linha.</p><p>Impressão do nome do arquivo.</p><p>Imprimimos, na linha 6, o nome do arquivo.</p><p>Saídas no console à direita.</p><p>Verifique as saídas no console à direita.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 23/86</p><p>Atividade 2</p><p>Ao trabalhar com arquivos em Python, é importante entender os</p><p>atributos de um objeto de arquivo para evitar erros comuns e gerenciar</p><p>recursos adequadamente. Qual dos seguintes é um atributo válido de</p><p>um objeto do tipo arquivo que indica se o arquivo está aberto ou</p><p>fechado?</p><p>Parabéns! A alternativa D está correta.</p><p>O atributo closed é um atributo padrão de um objeto do tipo arquivo em</p><p>Python, que retorna True se o arquivo estiver fechado e False se estiver</p><p>aberto. As demais alternativas não correspondem a atributos reais de</p><p>objetos de arquivo em Python.</p><p>Manipulando arquivo-texto em Python</p><p>Manipular arquivos de texto em Python permite a automação de tarefas</p><p>rotineiras, como leitura, escrita e processamento de dados. Essa prática</p><p>é importante para o desenvolvimento de scripts que gerenciam logs,</p><p>processam grandes volumes de dados ou geram relatórios.</p><p>Além disso, compreender como manipular esses arquivos</p><p>eficientemente contribui para a criação de aplicações mais robustas e</p><p>escaláveis, garantindo melhor gestão e organização das informações.</p><p>Neste vídeo, você verá o processo de captura, armazenamento e</p><p>manipulação de texto através de Python. A partir de exemplos,</p><p>A opened</p><p>B is_open</p><p>C close_status</p><p>D closed</p><p>E is_closed</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 24/86</p><p>abordaremos a leitura e a escrita de arquivos de texto, mostrando como</p><p>alterações simples nos dados podem impactar o conteúdo final.</p><p>Situação-problema</p><p>Você foi contratado por uma editora para desenvolver um programa que</p><p>ajude na revisão de textos. A editora recebe frequentemente textos de</p><p>autores que contêm inconsistências no uso de maiúsculas e</p><p>minúsculas, o que dificulta o processo de edição e publicação.</p><p>Objetivo</p><p>A ideia é desenvolver um programa em Python que permita a captura de</p><p>texto via console, no qual um editor pode inserir trechos de textos</p><p>recebidos dos autores. O programa deve salvar esses trechos em um</p><p>arquivo de texto, ler o arquivo, converter todo o texto para letras</p><p>maiúsculas para padronizar a formatação e finalmente sobrescrever o</p><p>arquivo original com o texto formatado. Esse processo facilitará a</p><p>revisão preliminar antes da edição final.</p><p>Acompanhe os passos esperados no programa!</p><p>Captura de dados: o programa deve solicitar ao usuário que insira</p><p>várias frases ou parágrafos pelo console. A entrada de dados deve</p><p>continuar até o usuário digitar "sair", indicando que deseja encerrar</p><p>a inserção e salvar o arquivo.</p><p>Criação e armazenamento: o texto inserido deve ser salvo em um</p><p>arquivo chamado meu_arquivo.txt.</p><p>Manipulação do arquivo: o programa deve abrir o arquivo salvo, ler o</p><p>conteúdo e converter todas as letras para maiúsculas.</p><p>Sobrescrever o arquivo original: após a manipulação, o texto</p><p>alterado deve ser usado para sobrescrever o arquivo original,</p><p>garantindo que o arquivo contenha apenas o texto formatado.</p><p>Veja o código a seguir.</p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 25/86</p><p>O código apresentado é um exemplo de script para capturar, manipular e</p><p>armazenar texto digitado pelo usuário. Acompanhe suas operações</p><p>principais!</p><p>Captura dados</p><p>Acontece da seguinte maneira:</p><p>O script inicia com uma mensagem para o usuário, solicitando que</p><p>ele digite frases e termine digitando sair quando quiser finalizar.</p><p>Um loop while True é usado para receber continuamente as</p><p>entradas do usuário através da função input(). Cada entrada é</p><p>adicionada a uma lista chamada frases.</p><p>O loop é interrompido (break) quando o usuário digita sair,</p><p>verificado após cada entrada com o método .lower() para garantir</p><p>que a comparação seja insensível a maiúsculas e minúsculas.</p><p>Cria e armazena o arquivo</p><p>Acontece da seguinte maneira:</p><p>Após o término da entrada de dados, o script abre (ou cria, se não</p><p>existir) um arquivo chamado meu_arquivo.txt no modo de escrita</p><p>(w) usando a instrução with open(...) as arquivo:.</p><p>Dentro desse bloco, o script escreve cada frase armazenada na lista</p><p>frases no arquivo. Cada frase é seguida por uma quebra de linha \n.</p><p>Lê e manipula o arquivo</p><p>Acontece da seguinte maneira:</p><p>Uma vez que o arquivo é criado, o script procede para abrir o</p><p>mesmo arquivo, agora no modo de leitura (r).</p><p>O conteúdo do arquivo é lido linha por linha. Cada linha é despojada</p><p>de espaços extras e quebras de linha com .strip() e convertida para</p><p>letras maiúsculas com .upper().</p><p>As linhas modificadas são armazenadas em uma nova lista</p><p>chamada dados_modificados.</p><p>Sobrescreve o arquivo original</p><p>Acontece da seguinte maneira:</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 26/86</p><p>O arquivo meu_arquivo.txt é novamente aberto, dessa vez, no modo</p><p>de escrita (w), o que trunca o arquivo a zero antes de começar a</p><p>escrever.</p><p>O script então escreve cada linha da lista dados_modificados de</p><p>volta ao arquivo, cada uma terminando com uma quebra de linha \n.</p><p>Con�rma a conclusão</p><p>Acontece da seguinte maneira:</p><p>Após a reescrita, uma mensagem é impressa para informar que o</p><p>arquivo foi sobrescrito com os dados modificados.</p><p>É importante considerar o seguinte:</p><p>O uso do contexto with para manipulação de arquivos é uma prática</p><p>recomendada porque garante que o arquivo seja fechado</p><p>corretamente após as operações, mesmo se uma exceção ocorrer</p><p>durante o processo.</p><p>A conversão de todas as entradas para maiúsculas é um exemplo</p><p>de normalização de dados, útil em muitos contextos de</p><p>processamento de texto para garantir consistência.</p><p>Esse script é uma excelente maneira de entender a manipulação básica</p><p>de arquivos em Python, incluindo leitura, escrita e aplicação de</p><p>transformações simples aos dados de texto.</p><p>Atividade 3</p><p>Considere o script Python apresentado anteriormente, na</p><p>demonstração prática, que lê, modifica e sobrescreve um arquivo de</p><p>texto. Se, em vez de abrir o arquivo no modo "w" (write) para</p><p>sobrescrevê-lo, o arquivo fosse aberto no modo "a" (append) após ser</p><p>lido e modificado, qual seria o resultado?</p><p>A</p><p>O arquivo original seria duplicado, contendo primeiro o</p><p>texto original seguido pelo texto modificado.</p><p>B</p><p>Apenas o texto modificado seria salvo no arquivo,</p><p>substituindo o texto original.</p><p>C</p><p>O texto modificado seria adicionado ao final do arquivo,</p><p>após o texto original.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 27/86</p><p>Parabéns! A alternativa C está correta.</p><p>Abrir o arquivo no modo "a" (append) faz com que os dados sejam</p><p>escritos ao final do arquivo existente, sem excluir o conteúdo anterior.</p><p>Assim, o texto original permaneceria, e o texto modificado seria</p><p>adicionado ao final, resultando em uma duplicação parcial do</p><p>conteúdo.</p><p>Lidando com dados binários em</p><p>arquivo com Python</p><p>Lidar com arquivos binários em Python é uma habilidade prática</p><p>essencial para trabalhar com dados complexos e formatos de arquivo</p><p>personalizados.</p><p>Arquivos binários são usados para armazenar dados de forma</p><p>compacta e eficiente, incluindo imagens, vídeos, áudios, e arquivos</p><p>executáveis. Ao manipular arquivos binários, você pode realizar</p><p>operações de leitura e escrita de dados em baixo nível, possibilitando a</p><p>criação de aplicações</p><p>que interagem diretamente com hardware ou</p><p>sistemas legados.</p><p>Essa habilidade é imprescindível em áreas como processamento de</p><p>imagem, engenharia de software embarcado, e desenvolvimento de</p><p>jogos. Além disso, entender como manipular arquivos binários permite</p><p>otimizar o desempenho de suas aplicações, pois a manipulação direta</p><p>de bytes pode ser significativamente mais rápida do que o</p><p>processamento de dados em formato texto.</p><p>Compreender a leitura, a escrita e a interpretação de arquivos binários</p><p>também é fundamental para garantir a integridade e a segurança dos</p><p>dados, uma vez que qualquer corrupção pode levar a falhas no sistema.</p><p>Neste vídeo, será abordada a manipulação direta de dados de imagens</p><p>com Python. Demonstraremos como abrir, exibir e alterar imagens</p><p>usando a biblioteca PIL e como salvar esses dados em arquivos</p><p>binários.</p><p>D</p><p>Um novo arquivo seria criado e o original permaneceria</p><p>inalterado.</p><p>E</p><p>O programa retornaria um erro, pois o modo "a" não</p><p>permite leitura.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 28/86</p><p>Situação-problema</p><p>Em uma pequena empresa de design gráfico, surgiu a necessidade de</p><p>implementar um sistema capaz de manipular imagens para uso em</p><p>diferentes campanhas publicitárias. O gerente do projeto solicitou uma</p><p>ferramenta que permita aos designers visualizarem, manipularem e</p><p>criarem cópias de imagens no formato binário para entender melhor a</p><p>estrutura de dados de imagens e explorar efeitos criativos através da</p><p>manipulação direta desses dados.</p><p>Objetivos do programa</p><p>Desenvolver um programa em Python que execute as seguintes</p><p>operações:</p><p>1. Carregar uma imagem simples do sistema de arquivos.</p><p>2. Converter a imagem em uma representação binária usando a</p><p>biblioteca PIL (Python Imaging Library).</p><p>3. Exibir os dados binários da imagem.</p><p>4. Salvar esses dados em um arquivo binário.</p><p>5. Fazer uma cópia desse arquivo binário.</p><p>6. Manipular os dados do arquivo binário cópia (por exemplo, inverter</p><p>os bytes, adicionar ruído etc.).</p><p>7. Carregar a imagem modificada a partir do arquivo binário e exibi-la</p><p>para ver o efeito das manipulações.</p><p>O Código Python fica da seguinte maneira:</p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 29/86</p><p>O código Python descrito realiza uma série de operações envolvendo a</p><p>manipulação de uma imagem usando a biblioteca PIL (Python Imaging</p><p>Library) e manipulação de dados binários. A seguir, apresentamos uma</p><p>explicação passo a passo de cada etapa do código.</p><p> Carregar a imagem original</p><p>A função Image.open("simple_icon.png") da</p><p>biblioteca PIL é usada para carregar uma</p><p>imagem do disco. O arquivo "simple_icon.png"</p><p>deve estar no mesmo diretório do script ou o</p><p>caminho até ele deve ser especificado</p><p>corretamente.</p><p>img.show() exibe a imagem original. Isso</p><p>permite que o usuário visualize a imagem</p><p>antes das manipulações.</p><p> Converter a imagem em dados binários</p><p>np.array(img) converte a imagem carregada em</p><p>um array do NumPy. Esse array contém os</p><p>valores dos pixels da imagem.</p><p>img_data.tobytes() converte os dados do array</p><p>NumPy em uma sequência binária. Esse é o</p><p>formato que permite salvar a imagem em um</p><p>arquivo binário diretamente.</p><p> Salvar os dados binários em um arquivo</p><p>Um arquivo chamado "original_img.bin" é</p><p>criado e aberto no modo "wb" (write binary)</p><p>para escrita binária.</p><p>Os dados binários são escritos no arquivo</p><p>usando file.write(binary_data).</p><p> Copiar o arquivo binário</p><p>O arquivo "original_img.bin" é aberto no modo</p><p>"rb" (read binary) para leitura.</p><p>Os dados binários são lidos do arquivo original</p><p>usando original_file.read() e armazenados na</p><p>variável data.</p><p>U i h d " i bi " é</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 30/86</p><p>Esse script é um exemplo prático de como as operações de baixo nível</p><p>em arquivos binários podem afetar o conteúdo dos arquivos (neste</p><p>caso, uma imagem). Ele serve como um exercício educativo para</p><p>entender a estrutura de dados de imagens e o impacto de manipulações</p><p>diretas dos dados binários.</p><p>Atividade 4</p><p>Um novo arquivo chamado "copy_img.bin" é</p><p>então aberto no modo "wb" e os dados lidos</p><p>são escritos nele, efetivamente criando uma</p><p>cópia do arquivo original.</p><p> Manipular os dados do arquivo binário cópia</p><p>O arquivo "copy_img.bin" é novamente aberto</p><p>no modo "rb" para leitura dos dados binários.</p><p>Os dados são lidos e convertidos para</p><p>bytearray, permitindo a modificação dos bytes.</p><p>Os bytes são invertidos (data[::-1]), uma forma</p><p>simples de manipulação. Isso inverte a ordem</p><p>dos bytes em todo o arquivo, o que</p><p>provavelmente corromperá a imagem de uma</p><p>maneira visualmente distinta.</p><p>O arquivo é então aberto novamente no modo</p><p>"wb" e os bytes modificados são escritos de</p><p>volta ao arquivo.</p><p> Carregar e mostrar a imagem modi�cada</p><p>Os dados binários modificados são carregados</p><p>de volta em um array NumPy com o mesmo</p><p>formato e tipo de dados da imagem original</p><p>usando np.frombuffer(data,</p><p>dtype=np.uint8).reshape(img_data.shape).</p><p>A imagem é reconstruída do array NumPy</p><p>modificado usando</p><p>Image.fromarray(modified_data).</p><p>modified_img.show() exibe a imagem</p><p>resultante, que agora reflete as modificações</p><p>feitas nos dados binários.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 31/86</p><p>No script de manipulação de imagem utilizando a biblioteca PIL para</p><p>manipular arquivos binários, o que aconteceria se os arquivos fossem</p><p>abertos no modo "w" (write) e "r" (read) em vez de "wb" (write binary) e</p><p>"rb" (read binary) ao tentar escrever os dados binários?</p><p>Parabéns! A alternativa C está correta.</p><p>Quando arquivos são abertos no modo "w" em vez de "wb", o Python</p><p>espera que os dados escritos sejam do tipo string e não bytes. Ao</p><p>tentar escrever dados binários diretamente em um arquivo aberto no</p><p>modo "w", ocorrerá um erro, pois o método write não aceita bytes sem</p><p>uma conversão explícita para string.</p><p>2 - Funções de manipulação de strings</p><p>Ao �nal deste módulo, você será capaz de reconhecer as funções de manipulação de strings.</p><p>A</p><p>Os dados seriam escritos corretamente sem nenhum</p><p>erro.</p><p>B</p><p>A imagem resultante seria exatamente invertida,</p><p>conforme pretendido na manipulação.</p><p>C</p><p>Seria retornado um erro, pois o método write requer um</p><p>argumento do tipo string em vez de bytes.</p><p>D</p><p>Os dados binários seriam convertidos</p><p>automaticamente para string antes de serem escritos.</p><p>E</p><p>O arquivo final seria maior devido à conversão incorreta</p><p>de bytes para strings.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 32/86</p><p>Manipulação de strings</p><p>A habilidade de manipular strings em Python é essencial na</p><p>programação moderna, pois textos são frequentemente o meio de</p><p>comunicação entre o usuário e a máquina, assim como entre sistemas.</p><p>Seja para ajustar dados extraídos de arquivos, formatar mensagens para</p><p>exibição, ou processar entradas do usuário, as operações sobre strings</p><p>— como remoção de espaços, alteração de maiúsculas e minúsculas, e</p><p>substituição de caracteres — são ferramentas poderosas.</p><p>Dominar essas funções permite um tratamento eficiente e preciso dos</p><p>dados, fundamental para a integridade e usabilidade das aplicações.</p><p>Neste vídeo, exploramos as funções essenciais de manipulação de</p><p>strings em Python, incluindo strip, split, join e count. Demonstraremos</p><p>como esses métodos podem ser aplicados para limpar dados, contar</p><p>palavras, dividir e unir strings, facilitando o processamento de texto em</p><p>aplicações.</p><p>Durante a vida de programador, é muito comum nos depararmos com</p><p>situações em que precisamos realizar alguns ajustes e operações sobre</p><p>os textos lidos de arquivos, como remover espaço em branco, colocar</p><p>todas as letras maiúsculas, substituir e contar palavras.</p><p>Neste</p><p>módulo, veremos alguns métodos presentes nos objetos do tipo</p><p>str (string), que são muito utilizados em conjunto com a manipulação de</p><p>arquivos.</p><p>Método strip</p><p>Como mostrado nos scripts da imagem abaxio (script5), ao ler o</p><p>conteúdo do arquivo, o Python retorna os caracteres de final de linha (\r</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 33/86</p><p>e \n). Muitas vezes, essa informação não é necessária, principalmente</p><p>se estivermos tratando uma linha de cada vez. Veja:</p><p>Leitura do arquivo script5.</p><p>Dependendo do objetivo, esses caracteres são considerados lixo e</p><p>podem atrapalhar o processamento que desejamos realizar. Para</p><p>remover esses caracteres e também espaços em branco adicionais, o</p><p>tipo str disponibiliza o método strip(). O método strip remove os</p><p>caracteres do início e do final da linha. Observe o uso deste método no</p><p>exemplo a seguir. Clique nas setas para acompanhar cada ação:</p><p>Scripts 13a e 13b, suas saídas e arquivo dados13.txt.</p><p>Temos os scripts 13a e 13b, suas respectivas saídas e seu</p><p>arquivo dados13.txt.</p><p>Abertura do arquivo dados13.txt.</p><p>Abrimos o arquivo dados13.txt, exibido à direita da figura, e</p><p>imprimimos o conteúdo de cada linha desse arquivo. Vamos</p><p>utilizar o método repr para verificar o real conteúdo da string.</p><p></p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 34/86</p><p>Separação do script em duas partes.</p><p>Separamos o script em duas partes, a e b, de forma a se</p><p>perceber melhor o resultado da utilização do método strip().</p><p>Abertura do arquivo em modo leitura.</p><p>Abrimos o arquivo em modo leitura, na primeira parte,</p><p>script13a, utilizando o with na linha 1, iteramos sobre o objeto</p><p>arquivo na linha 3 e imprimimos o conteúdo de cada linha na</p><p>linha 4.</p><p>Presença dos espaços em branco e caracteres de nova linha.</p><p>Observe, no console abaixo do script13a, que os espaços em</p><p>branco no início de cada linha e os caracteres de nova linha</p><p>(\n) estão presentes na string.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 35/86</p><p>Abertura e iteração do mesmo arquivo.</p><p>Abrimos, na segunda parte, script13b, o mesmo arquivo e</p><p>iteramos da mesma forma. Porém, desta vez, “limpamos” a</p><p>linha utilizando o método strip, na linha 4. Esse método retorna</p><p>uma nova string, que é armazenada na variável linha_limpa. Em</p><p>seguida, na linha 5, imprimimos a representação dessa</p><p>variável.</p><p>Saída do console.</p><p>Observe a saída do console e verifique que os caracteres em</p><p>branco do início da linha e os caracteres de nova linha foram</p><p>removidos.</p><p>Um exemplo real de utilização do strip é quando desejamos contar a</p><p>quantidade de linhas com algum conteúdo em um arquivo. Dependendo</p><p>do tamanho do arquivo, é inviável remover manualmente as linhas em</p><p>branco. Para resolver esses problemas, podemos utilizar o método strip</p><p>da seguinte forma:</p><p>Vamos abrir o mesmo arquivo do exemplo anterior, dados13.txt, e iterar</p><p>sobre cada linha, incrementando um contador, que será impresso no</p><p>final. Para melhor ilustrar, vamos mostrar como contar as linhas sem</p><p>usar o método strip, script14a, com o strip script14b, veja:</p><p>Scripts 14a e 14b e suas respectivas saídas.</p><p>Temos os scripts 14a e 14b e suas respectivas saídas.</p><p>Abertura do arquivo em modo leitura.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 36/86</p><p>Abrimos, no primeiro script, o arquivo em modo leitura na linha</p><p>1, criamos e inicializamos uma variável inteira contador, linha 3,</p><p>e iteramos seu conteúdo linha a linha, utilizando o loop for,</p><p>linha 4.</p><p>Verificação da variável conter ou não conteúdo.</p><p>Verificamos, na linha 5, se a variável linha, do tipo str, contém</p><p>algum conteúdo. Lembrando que uma variável do tipo string</p><p>testa para falso apenas se seu conteúdo for vazio ('' ou ""); caso</p><p>a string contenha, pelo menos, um espaço, ela testará</p><p>verdadeiro. Continuando, na linha 6, caso exista algum</p><p>conteúdo, incrementamos o contador.</p><p>Obtenção do valor 7 pelo contador.</p><p>O contador, para o primeiro script, obteve valor 7, indicando que</p><p>o arquivo contém 7 linhas, conforme console abaixo do</p><p>script14a.</p><p>Escrita do mesmo código.</p><p>Escrevemos, no segundo script, praticamente o mesmo código,</p><p>iniciando pela abertura do arquivo na linha 1, e assim por</p><p>diante. A exceção é a linha 5, que testa o conteúdo da variável</p><p>linha após utilização do método strip(). Observe que, agora,</p><p>contamos corretamente o número de linhas com algum</p><p>conteúdo, 3.</p><p>Métodos count e split</p><p>Outra atividade muito comum na manipulação de arquivos é a contagem</p><p>do número de vezes que determinada palavra aparece. O Python</p><p>disponibiliza o método count para strings, que recebe como parâmetro a</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 37/86</p><p>palavra que desejamos contar e retorna o total de ocorrências dela. Sua</p><p>sintaxe é a seguinte:</p><p>Python </p><p>Nela, a variavel_string é uma variável do tipo str e palavra é a string que</p><p>desejamos contar.</p><p>Veja a seguir como utilizamos o método count para contar a quantidade</p><p>de vezes em que aparece a palavra “Olá”, no arquivo dados13.txt:</p><p>Scripts 15, saída e arquivo dados13.txt.</p><p>Temos os scripts 15, sua saída e arquivo dados13.txt.</p><p>Aplicação do método read.</p><p>Utilizamos, após abrir o arquivo na linha 1, o método read, linha</p><p>2, para retornar todo o conteúdo do arquivo como uma única</p><p>string e armazená-lo na variável texto. Na linha 3 utilizamos o</p><p>método count da variável texto, passando como argumento à</p><p>string “Olá”.</p><p>Armazenamento do total de ocorrências de “Olá”.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 38/86</p><p>O total de ocorrências da palavra “Olá” foi armazenado na</p><p>variável contador, que foi impressa na linha 4. Observe que o</p><p>total de ocorrência está correto: 3.</p><p>Apesar de ser muito simples a utilização do método count do tipo str,</p><p>pode gerar alguns efeitos indesejáveis, pois esse método também conta</p><p>as palavras que contêm parte da string passada como argumento.</p><p>Exemplo</p><p>Considere a frase: “Eu amo comer amoras no café da manhã”. Se</p><p>utilizarmos o método count, com a string “amo” como argumento, o</p><p>retorno será 2, pois o método irá considerar tanto a palavra amo quanto</p><p>a palavra amoras.</p><p>Para contornar esse problema, podemos “quebrar” uma frase em</p><p>palavras e depois verificar se cada palavra é igual à string que</p><p>buscamos.</p><p>Isso nos leva a outro método muito utilizado em processamento de</p><p>textos, o método split(), que é usado para quebrar uma string em partes</p><p>menores, retornando uma lista com essas partes. Sua sintaxe é a</p><p>seguinte:</p><p>Python </p><p>No exemplo, a variavel_string é uma variável do tipo str, e separador é</p><p>uma string que desejamos utilizar como ponto de quebra do texto. O</p><p>retorno desse método é uma lista de strings.</p><p>Digamos que desejamos usar o método split com separador ‘–‘ na frase:</p><p>“Amo futebol – Gosto de basquete”. O resultado seria uma lista em que</p><p>o primeiro elemento é a string “Amo futebol ” e o segundo elemento é</p><p>string “ Gosto de basquete”. Caso nenhum separador seja passado</p><p>como argumento, o Python irá utilizar um ou mais espaços como</p><p>separador padrão.</p><p>Dica</p><p>A string utilizada como separador não aparecerá em nenhum elemento</p><p>da lista retornada.</p><p>No exemplo a seguir o método split é utilizado em três frases diferentes</p><p>para mostrar o comportamento dele. Confira:</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 39/86</p><p>Script 16 e saída.</p><p>Temos o script 16 e sua saída.</p><p>Aplicação do método split.</p><p>Utilizamos o método split sem argumentos, linha 2, e</p><p>imprimimos a lista retornada na linha 3. Observe pelo console</p><p>que cada item da lista é uma palavra da frase.</p><p>Aplicação do método split e impressão da lista.</p><p>Utilizamos o método split, também, sem argumentos, linha 6, e</p><p>imprimimos a lista retornada na linha 7. Observe pelo console</p><p>que, mesmo havendo muitos espaços em branco entre as</p><p>palavras da frase, a lista contém apenas as palavras, sem</p><p>nenhum espaço adicional. O Python é esperto o suficiente para</p><p>detectar vários espaços contínuos e tratá-los como um único</p><p>separador.</p><p>Aplicação do método split passando uma vírgula ( , ).</p><p>Temos, na linha 9, a última frase: "Carro,moto,avião". Desta vez,</p><p>utilizamos o método split passando uma vírgula ( , ) como</p><p>argumento, na linha 10. O resultado é uma lista contendo</p><p>apenas as palavras, sem o separador, conforme podemos ver</p><p>pelo console.</p><p>Agora que sabemos como funciona o método split, no próximo exemplo,</p><p>vamos utilizar esse método para realizar a contagem da palavra “amo”</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 40/86</p><p>na frase do exemplo anterior: “Eu amo comer amoras no café da</p><p>manhã.”. Vamos aproveitar para comparar os resultados obtidos pelos</p><p>métodos count e split.</p><p>Script 17 e saída.</p><p>Temos o script 17 e sua saída.</p><p>Definição da variável frase.</p><p>Definimos, na linha 1, nossa variável frase com o conteúdo</p><p>descrito anteriormente.</p><p>Aplicação do método count.</p><p>Utilizamos, na linha 4, o método count do tipo str para contar</p><p>diretamente o número de ocorrências da string “amo” na frase.</p><p>Pelo console, vemos que o resultado da contagem foi 2. Uma</p><p>ocorrência pela palavra amo e outra pela palavra amora.</p><p>Criação de um contador e aplicação do método split.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 41/86</p><p>Criamos, para realizar a contagem da mesma frase usando o</p><p>split, um contador, linha 7, e quebramos a frase em palavras</p><p>utilizando o método split, linha 8.</p><p>Iteração sobre cada palavra.</p><p>Iteramos, na linha 9, sobre cada palavra utilizando a variável</p><p>termo. Para cada termo, comparamos se seu valor é igual a</p><p>string “amo”, linha 10. Caso seja igual, incrementamos o</p><p>contador, linha 11. Observe que desta vez alcançamos o</p><p>resultado correto para a contagem, 1.</p><p>No script17.py, para realizar a contagem da palavra “amo” na frase “Eu</p><p>amo comer amoras no café da manhã”, foi criada uma lista chamada</p><p>lista_termos, através do uso do método split sobre a variável que</p><p>continha a frase mencionada. Também foi criado um contador e houve</p><p>uma iteração sobre lista_termos, realizando comparações entre os</p><p>elementos desta e a palavra “amo”.</p><p>Será que não haveria uma maneira de realizar essa</p><p>contagem de outra maneira, fazendo uso dos métodos</p><p>de manipulação de strings apresentados até aqui?</p><p>Utilize o emulador de códigos abaixo para desenvolver outra solução</p><p>para o problema da contagem da palavra “amo” na frase “Eu amo comer</p><p>amoras no café da manhã.”:</p><p>Exercício 1 dTUTORIAL COPIAR</p><p>Python3</p><p>null</p><p>null</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 42/86</p><p>A resolução está contida a seguir:</p><p>No código acima, na linha 2, temos a separação das palavras da frase</p><p>por meio do uso do método split na variável frase (tipo string). A seguir,</p><p>na linha 3, utilizamos o método count com o argumento “amo”, para</p><p>obtermos a quantidade de ocorrências dessa string (“amo”) em</p><p>lista_termos. Por fim, na linha 4, imprimimos o resultado no console do</p><p>emulador.</p><p>Vamos avançar para mais um método!</p><p>Método join</p><p>Assim como há a necessidade de quebrar uma frase em uma lista de</p><p>palavras, podem existir situações em que ocorra o inverso, ou seja,</p><p>temos uma lista de palavras ou frases e desejamos concatená-las em</p><p>uma única string.</p><p>Para essa operação, utilizamos o método join do tipo str, que retorna</p><p>uma única string com todos os elementos da lista concatenados,</p><p>utilizando determinado conector. Sua sintaxe é a seguinte:</p><p>Python </p><p>Em que “conector” é a string que será utilizada entre os elementos da</p><p>lista que serão concatenados (ex. ', ') e iteravel é um iterável, como uma</p><p>lista ou tupla.</p><p>No exemplo a seguir, vamos unir os elementos de uma lista utilizando</p><p>dois conectores diferentes: o conector vírgula (', ') e o conector de nova</p><p></p><p>Exercício 2 dTUTORIAL COPIAR</p><p>Python3</p><p>null</p><p>null</p><p></p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 43/86</p><p>linha ('\n'). Após a união, vamos gravar o conteúdo em um arquivo para</p><p>mostrar o resultado:</p><p>Script 19, arquivos texto1.txt e texto2.txt.</p><p>Temos o script 19, arquivos texto1.txt e texto2.txt.</p><p>Criação da lista minha_lista.</p><p>Criamos, na linha 1, a lista minha_lista, que será utilizada nos</p><p>dois exemplos.</p><p>Aplicação do método join.</p><p>Utilizamos, na linha 3, o método join com o conector ', ' e</p><p>atribuímos o resultado à variável texto1. O resultado dessa</p><p>variável foi gravado no arquivo texto1.txt, que pode ser visto na</p><p>imagem.</p><p>Junção dos elementos da mesma lista.</p><p>Fazemos, na linha 7, a junção dos elementos da mesma lista</p><p>utilizando o conector '\n'. O resultado da junção foi gravado no</p><p>arquivo texto2.txt, que pode ser visto à direita da imagem. Com</p><p>isso, fomos capazes de colocar cada elemento da lista em uma</p><p>linha do arquivo.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 44/86</p><p>Atividade 1</p><p>Ao trabalhar com manipulação de strings em Python, é comum a</p><p>necessidade de remover espaços em branco e caracteres de nova linha</p><p>ao final de strings, especialmente ao ler linhas de um arquivo. Qual</p><p>método é utilizado para essa finalidade?</p><p>Parabéns! A alternativa C está correta.</p><p>O método strip() é usado para remover espaços em branco, incluindo</p><p>novas linhas e tabulações, do início e do fim de uma string. As demais</p><p>alternativas não são métodos válidos para manipulação de strings em</p><p>Python.</p><p>Formatação de strings</p><p>Saber formatar strings em Python é uma competência importantíssima</p><p>para qualquer profissional da tecnologia, pois permite a personalização</p><p>e a apresentação adequada de dados em diversas aplicações.</p><p>Desde a inclusão de variáveis em mensagens até a especificação de</p><p>formatos numéricos e datas, a formatação de strings viabiliza a criação</p><p>de saídas legíveis e profissionais. As chamadas "f-strings" do Python</p><p>simplificam significativamente a inserção de expressões dentro de</p><p>strings, facilitando a leitura e a manutenção do código.</p><p>Dominar essas técnicas de formatação, além de melhorar a interface do</p><p>usuário, também é crucial para o processamento eficiente de dados e</p><p>geração de relatórios.</p><p>A remove()</p><p>B delete()</p><p>C strip()</p><p>D cut()</p><p>E clean()</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 45/86</p><p>Neste vídeo, exploraremos as técnicas de formatação de strings em</p><p>Python, incluindo o poderoso recurso das f-strings. Veremos como</p><p>incorporar variáveis, definir precisão numérica e formatar datas</p><p>diretamente em strings para gerar saídas claras e profissionais.</p><p>Até o momento, realizamos operações sobre strings pré-existentes. No</p><p>entanto, é muito comum precisarmos juntar valores de variáveis com</p><p>strings.</p><p>Agora, veremos algumas funções relacionadas às strings, começando</p><p>pela formatação de strings (string formatting).</p><p>A formatação de strings permite ajustar como uma string será exibida</p><p>ou gravada em um arquivo, por exemplo. Ajustes como: número de</p><p>casas decimais em float, exibição de datas, inclusão de variáveis e</p><p>espaçamento são alguns dos exemplos.</p><p>Existem basicamente três formas de realizar a formatação de strings.</p><p>São elas:</p><p>Utilizando f-strings (formatted string literals).</p><p>Utilizando o método format() das strings.</p><p>Fazendo manualmente.</p><p>Veremos como utilizar f-strings, recurso adicionado na versão 3.6</p><p>do</p><p>Python.</p><p>F-strings</p><p>São tipos especiais de strings que aceitam uma notação especial para</p><p>permitir a inclusão de expressões diretamente na string.</p><p>F-strings</p><p>O objetivo principal da criação das f-strings foi facilitar a formatação de</p><p>strings.</p><p>Para definimos uma variável f-string, precisamos incluir, antes das aspas</p><p>que definem uma string, a letra f (ou F), por exemplo:</p><p>Python </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 46/86</p><p>Dentro das f-string, podemos utilizar expressões em Python entre as</p><p>chaves, delimitadas pelos caracteres { e }.</p><p>Essas expressões incluem variáveis ou literais. Inclusive, podemos fazer</p><p>chamada para funções ou utilizar métodos de variáveis dentro desses</p><p>delimitadores.</p><p>Todo o conteúdo entre os caracteres { e } é substituído pelo resultado da</p><p>expressão e interpolado à string.</p><p>Compare a seguir a manipulação manual de strings com a utilização de</p><p>f-string e veja alguns exemplos de uso de literais mais sofisticados</p><p>dentro de f-strings:</p><p>Literais</p><p>É algo que o interpretador reconhece como uma sintaxe válida (exemplo: 2</p><p>> 3 retorna False, [1, 2]) retorna uma lista.</p><p>Script 20 e saída.</p><p>Temos o script 20 e sua saída.</p><p>Definição da variável nome.</p><p>Definimos, na linha 1, a variável nome, do tipo string, que será</p><p>utilizada ao longo do script.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 47/86</p><p>Mostramos, na linha 3, como incluir o valor da variável nome no</p><p>meio de outra string, utilizando o processo manual de</p><p>concatenação de strings por meio do operador '+'.</p><p>Aplicação da sintaxe f-string.</p><p>Utilizamos, na linha 4, a sintaxe da f-string para incluir o valor</p><p>da variável nome também no meio de outra string. Observe que</p><p>a IDE PyCharm já detectou que temos uma expressão entre as</p><p>chaves e alterou a cor para destacar esse elemento. No</p><p>console, o resultado das variáveis minha_string e</p><p>minha_fstring1 foi o mesmo, porém a sintaxe da f-string é</p><p>muito mais clara e simples de ser utilizada e entendida.</p><p>Aplicação do método upper.</p><p>Temos, na linha 5, o mesmo exemplo da linha anterior, porém</p><p>chamamos o método upper do tipo str para colocar todas as</p><p>letras em maiúsculo. Isso foi feito diretamente na expressão!</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 48/86</p><p>Aplicação de soma na expressão entre chaves.</p><p>Utilizamos, na linha 6, uma soma na expressão entre chaves,</p><p>que foi calculada corretamente, conforme console.</p><p>Aplicação do comparador booleano >.</p><p>Utilizamos, na linha 7, o comparador booleano >, que também</p><p>foi avaliado corretamente.</p><p>Aplicação do operador IN.</p><p>Utilizamos, na linha 8, o operador IN para verificar a pertinência</p><p>de um número em uma lista, que, mais uma vez, foi avaliado</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 49/86</p><p>corretamente. Observe como é fácil e intuitiva a utilização de f-</p><p>string!</p><p>Veja agora algumas funcionalidades adicionais de formatação de string</p><p>utilizando f-string, como a definição de largura de uma string,</p><p>formatação de float e de datas:</p><p>Script 21 e sua saída.</p><p>Para facilitar o entendimento, o script21 foi dividido em três trechos. O</p><p>primeiro trecho, entre as linhas 3 e 6, trata da formatação de largura do</p><p>conteúdo de expressões, que serve, principalmente, para alinhar</p><p>conteúdo de texto. No segundo trecho, das linhas 10 a 16, mostramos</p><p>como formatar floats. No terceiro trecho, das linhas 20 a 24, mostramos</p><p>como formatar datas. Confira cada trecho citado:</p><p>No primeiro trecho, definimos uma lista chamada frutas na linha</p><p>3 e, na linha 4, percorremos cada item dessa lista.</p><p>Para cada item, montamos a f-string minha_fruta, que contém o</p><p>nome da fruta e o número de letras que a fruta tem. Destacamos</p><p>essa linha a seguir:</p><p>Destaque f-string.</p><p>Para indicar a largura, ou melhor, o número de espaços que o</p><p>conteúdo de uma variável deve ocupar, devemos utilizar a sintaxe</p><p>{variavel:n}, onde temos o nome da variável, seguida de dois</p><p>pontos (:) e o número de espaços (n) que se deve ocupar.</p><p>Caso o tamanho do conteúdo da variável seja menor que o</p><p>número n, serão incluídos espaços em branco até completar</p><p>esse tamanho. A posição dos espaços adicionados depende do</p><p>tipo da variável. Para variáveis do tipo string, os espaços são</p><p>adicionados à direita, enquanto para variáveis do tipo inteiro, os</p><p>espaços são adicionados à esquerda.</p><p>Caso o tamanho do conteúdo da variável seja maior que o</p><p>número n, a formatação será ignorada.</p><p>Linhas 3 até 6 </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 50/86</p><p>Retornando ao exemplo, desejamos imprimir o nome da fruta de</p><p>forma que ela ocupe 12 espaços ({fruta:12}), e o número de</p><p>letras da fruta deve ocupar apenas três espaços ({len(fruta):3}).</p><p>Observe o resultado obtido no console à direita.</p><p>No segundo trecho, definimos uma variável float na linha 10 e</p><p>criamos três f-strings para exibir esse conteúdo.</p><p>A formatação com f-string nos permite um controle maior de</p><p>como será exibido um número do tipo float, no qual podemos</p><p>definir a largura e o número de casas decimais que devem ser</p><p>exibidos. A sintaxe para formatar um float é a seguinte:</p><p>Python </p><p>Pelo exemplo, temos o nome da variável do tipo float seguida de</p><p>dois pontos (:), a largura total que o número deve ocupar,</p><p>incluindo as casas decimais, e o ponto (separador de decimal),</p><p>seguido de um ponto (.), o número de casas decimais (precisao)</p><p>e a letra “f”, que deve estar junto à precisão. A largura é opcional.</p><p>Na primeira f-string, na linha 11, utilizamos a expressão {pi:.1f},</p><p>ou seja, queremos que seja exibido o valor da variável pi com</p><p>uma casa decimal apenas. Como não especificamos a largura,</p><p>ela será calculada de forma a acomodar toda a parte inteira do</p><p>float.</p><p>Na f-string da linha 12, utilizamos a expressão {pi:6.1f}, que</p><p>indica que o número deve ocupar seis espaços, sendo que,</p><p>necessariamente, deve ter uma casa decimal.</p><p>Na última f-string, linha 13, utilizamos a expressão {pi:.4f}, para</p><p>que seja exibido o número com quatro casas decimais. Observe,</p><p>no console, como ficaram os resultados.</p><p>No terceiro e último trecho, vamos mostrar como formatar datas</p><p>em expressões f-string.</p><p>Na linha 20, definimos a variável data com a data atual, utilizando</p><p>o método datetime.now().</p><p>Linhas 10 até 16 </p><p>Linhas 20 até 24 </p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 51/86</p><p>Na linha 21, criamos uma f-string para exibir o valor da variável</p><p>data sem informar ao Python qual formatação ele deve utilizar</p><p>({data}). Com isso, a data foi impressa no formato padrão: 2020-</p><p>08-13 10:50:32.262037.</p><p>Na linha 22, utilizamos a expressão {data:%d/%m/%Y}, que indica</p><p>que desejamos exibir a data no formato “dia/mês/ano”</p><p>(13/08/2020). Veja o resultado no console à direta.</p><p>Pesquise mais sobre o módulo datetime na documentação oficial para</p><p>descobrir outras maneiras de formatar datas.</p><p>Vamos avançar!</p><p>Atividade 2</p><p>Na programação Python, uma compreensão adequada da formatação</p><p>de strings é fundamental para a apresentação clara de informações.</p><p>Qual método permite uma manipulação detalhada da apresentação de</p><p>variáveis dentro de strings, incluindo a definição de largura e precisão?</p><p>Parabéns! A alternativa C está correta.</p><p>As f-strings, introduzidas no Python 3.6, oferecem uma maneira prática</p><p>e eficiente de formatar strings. Elas permitem a inclusão direta de</p><p>expressões Python dentro de chaves {}, possibilitando ajustes finos de</p><p>largura, precisão e outros formatos diretamente na string, tornando o</p><p>código mais legível e conciso.</p><p>A String concatenation</p><p>B Método join()</p><p>C f-strings</p><p>D Método replace()</p><p>E Método strip()</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 52/86</p><p>Codi�cando mensagens com Python</p><p>Transformar e codificar strings em Python é uma habilidade prática de</p><p>grande relevância para desenvolvedores e analistas de dados. A</p><p>manipulação de strings é uma tarefa comum em diversas aplicações,</p><p>desde a preparação de dados para análise até a criação de interfaces de</p><p>usuário.</p><p>Codificar strings, por outro lado, é importante para garantir a segurança</p><p>e a integridade das informações transmitidas e armazenadas. Por</p><p>exemplo, ao enviar dados através da internet, é essencial codificar</p><p>strings para prevenir ataques de injeção SQL e proteger informações</p><p>sensíveis.</p><p>Além disso, compreender e aplicar técnicas de transformação e</p><p>codificação de strings é fundamental para a internacionalização de</p><p>software, na qual caracteres especiais e diferentes codificações de texto</p><p>são comuns. Isso permite que as aplicações sejam mais inclusivas e</p><p>utilizáveis por um público global.</p><p>A prática de transformar e codificar strings também é importante na</p><p>manipulação de arquivos, na formatação de dados para APIs e na</p><p>integração de sistemas diversos.</p><p>Neste vídeo, exploraremos como codificar uma mensagem usando a</p><p>cifra ZENIT POLAR em Python. Demonstraremos o uso de métodos</p><p>simples de substituição de strings, como o replace, e técnicas para</p><p>manipular e formatar textos, incluindo o uso de split e join.</p><p>Um desenvolvedor em uma empresa de segurança é encarregado de</p><p>criar uma ferramenta simples para codificar mensagens de texto</p><p>confidenciais antes de enviá-las. Para garantir uma codificação básica,</p><p>ele decide usar a cifra de substituição "ZENIT POLAR".</p><p>A codificação ZENIT POLAR é um tipo de cifra de substituição simples</p><p>na qual as letras de duas palavras ou grupos de letras são usadas para</p><p>substituir uma pela outra. No caso específico de "ZENIT POLAR", cada</p><p>letra em "ZENIT" é substituída pela letra correspondente em "POLAR" e</p><p>vice-versa. Esse tipo de cifra é bidirecional e simétrica, significando que</p><p>a mesma substituição é usada para codificar e decodificar mensagens.</p><p>Observe como a substituição funciona para cada letra.</p><p>**Z** é substituída por **P** e **P** por **Z**.</p><p>**E** é substituída por **O** e **O** por **E**.</p><p>**N** é substituída por **L** e **L** por **N**.</p><p>**I** é substituída por **A** e **A** por **I**.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 53/86</p><p>**T** é substituída por **R** e **R** por **T**.</p><p>Todas as outras letras que não estão incluídas na cifra são deixadas</p><p>inalteradas. A cifra ZENIT POLAR é relativamente simples e não oferece</p><p>uma segurança robusta para padrões modernos, mas é um exemplo</p><p>interessante de manipulação básica de texto e pode ser usada para</p><p>ilustrar conceitos de criptografia em contextos educacionais ou para</p><p>diversão.</p><p>Observe o código Python!</p><p>Python </p><p>O código demonstrado realiza a codificação de uma mensagem usando</p><p>uma cifra de substituição simples chamada ZENIT POLAR e demonstra</p><p>manipulações básicas de strings em Python. A seguir, apresentamos o</p><p>funcionamento detalhado de cada parte do script.</p><p>Função zenit_polar_replace</p><p>De�nição da função e substituições</p><p>A função zenit_polar_replace aceita um argumento text, que é a</p><p>string a ser codificada.</p><p>Dentro da função, uma lista de tuplas chamada replacements é</p><p>definida, em que cada tupla contém um par de caracteres. O</p><p>primeiro elemento de cada tupla é a letra original e o segundo é a</p><p>letra substituta, conforme a cifra ZENIT POLAR (ex: ('z', 'p') substitui</p><p>'z' por 'p').</p><p>Aplicação das substituições</p><p>Um loop for itera sobre cada tupla na lista replacements.</p><p>Para cada tupla, o método replace é chamado no text atual. O</p><p>método replace(old, new) substitui todas as ocorrências do</p><p>caractere old pelo caractere new no texto.</p><p>O texto modificado é então retornado ao final da função.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 54/86</p><p>Função main</p><p> Entrada de texto</p><p>A frase "The quick brown fox jumps over the lazy</p><p>dog" é armazenada na variável phrase e é</p><p>convertida para ter a primeira letra de cada palavra</p><p>em maiúscula usando o método title(). Isso é feito</p><p>para simular um cenário no qual todas as palavras</p><p>começam com maiúsculas antes de serem</p><p>codificadas.</p><p> Divisão do texto em palavras</p><p>O método split() é utilizado para dividir phrase em</p><p>uma lista de palavras, armazenada na variável</p><p>words. O método split() por padrão divide uma</p><p>string em cada espaço em branco, retornando uma</p><p>lista das substrings.</p><p> Codi�cação de cada palavra</p><p>Uma compreensão de lista</p><p>([zenit_polar_replace(word) for word in words]) é</p><p>usada para aplicar a função zenit_polar_replace a</p><p>cada palavra na lista words. O resultado é uma lista</p><p>de palavras codificadas, armazenada em</p><p>coded_words.</p><p> Junção das palavras codi�cadas em uma</p><p>frase</p><p>O método join() é usado para concatenar todas as</p><p>palavras na lista coded_words em uma única string,</p><p>separadas por espaços. Essa nova string é</p><p>armazenada em coded_phrase.</p><p> Exibição dos resultados</p><p>O script imprime a phrase original e a coded_phrase</p><p>para que o usuário possa comparar a entrada</p><p>i i l íd difi d</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 55/86</p><p>Esse script é um exemplo prático para demonstrar como realizar</p><p>substituições simples em strings e como manipular e transformar</p><p>strings em Python para fins de codificação básica.</p><p>Atividade 3</p><p>No contexto do script Python utilizando a cifra ZENIT POLAR para</p><p>codificar mensagens, o que aconteceria se o desenvolvedor passasse</p><p>toda a frase como argumento para o método zenit_polar_replace sem</p><p>primeiro usar o método split para criar uma lista de palavras?</p><p>Parabéns! A alternativa C está correta.</p><p>A codificação ocorreria exatamente da mesma maneira, pois o método</p><p>zenit_polar_replace aplica as substituições de letras definidas na cifra</p><p>ZENIT POLAR diretamente sobre qualquer string que receba como</p><p>entrada, independentemente de ser uma única palavra ou uma frase</p><p>completa. Assim, todas as letras correspondentes na frase seriam</p><p>substituídas conforme a configuração da cifra.</p><p>original com a saída codificada.</p><p>A</p><p>A codificação não seria aplicada, pois o método requer</p><p>divisão em palavras.</p><p>B</p><p>Apenas as letras no início de cada palavra seriam</p><p>codificadas.</p><p>C</p><p>A codificação seria aplicada da mesma maneira,</p><p>alterando todas as letras elegíveis na frase completa.</p><p>D</p><p>Seria gerado um erro, pois o método replace não pode</p><p>ser aplicado a strings não segmentadas.</p><p>E</p><p>Nenhuma letra seria codificada, mantendo a frase</p><p>original intacta.</p><p>12/09/2024, 19:22 Manipulação de dados em arquivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/00791/index.html?brand=estacio# 56/86</p><p>3 - Tratamento de exceções e outras operações</p><p>Ao �nal deste módulo, você será capaz de descrever as exceções na manipulação de arquivos</p><p>e outras operações.</p><p>Tratamento de exceções na</p><p>manipulação de arquivos</p><p>Durante a manipulação de arquivos, problemas como arquivos</p><p>inexistentes ou falta de permissões são comuns e só podem ser</p><p>detectados em tempo de execução. Sem um tratamento adequado,</p><p>essas exceções podem interromper o programa, comprometendo a</p><p>experiência do usuário e a integridade dos dados.</p><p>Utilizar técnicas de tratamento de exceções, como as cláusulas</p><p>try/except, permite gerenciar esses problemas de maneira eficiente,</p><p>garantindo que o programa continue executando de forma controlada e</p><p>segura.</p><p>Neste vídeo, vamos explorar o tratamento de exceções em Python, uma</p><p>prática fundamental para lidar com erros e situações inesperadas em</p><p>programas. Aprenderemos a utilizar blocos try-except para capturar e</p><p>tratar exceções, evitando interrupções indesejadas no fluxo do código.</p><p>Descubra como implementar estratégias de tratamento de erros</p>