Ajude nosso projeto a se manter online, faça um PIX de qualquer valor:
programacao.progressiva@gmail.com

Lista de Exercícios de Arquivos

Neste tutorial, vamos te propor duas questões bem interessantes de Python usando Arquivos.

Leia também:
Obter certificado do curso (para trabalhar como programador Python)
Obter apostila Python Progressivo (download do PDF)


Lista de Exercícios de Python

1. Faça um programa que leia um arquivo texto contendo uma lista de endereços IP e gere um outro arquivo, contendo um relatório dos endereços IP válidos e inválidos.

O arquivo de entrada possui o seguinte formato:
200.135.80.9
192.168.1.1
8.35.67.74
257.32.4.5
85.345.1.2
1.2.3.4
9.8.234.5
192.168.0.256

O arquivo de saída possui o seguinte formato:
[Endereços válidos:]
200.135.80.9
192.168.1.1
8.35.67.74
1.2.3.4

[Endereços inválidos:]
257.32.4.5
85.345.1.2
9.8.234.5
192.168.0.256




2. A ACME Inc., uma empresa de 500 funcionários, está tendo problemas de espaço em disco no seu servidor de arquivos. Para tentar resolver este problema, o Administrador de Rede precisa saber qual o espaço ocupado pelos usuários, e identificar os usuários com maior espaço ocupado. Através de um programa, baixado da Internet, ele conseguiu gerar o seguinte arquivo, chamado "usuarios.txt":

alexandre       456123789
anderson        1245698456
antonio         123456456
carlos          91257581
cesar           987458
rosemary        789456125

Neste arquivo, o nome do usuário possui 15 caracteres. A partir deste arquivo, você deve criar um programa que gere um relatório, chamado "relatório.txt", no seguinte formato:

ACME Inc.               Uso do espaço em disco pelos usuários
------------------------------------------------------------------------
Nr.  Usuário        Espaço utilizado     % do uso

1    alexandre       434,99 MB             16,85%
2    anderson       1187,99 MB             46,02%
3    antonio         117,73 MB              4,56%
4    carlos           87,03 MB              3,37%
5    cesar             0,94 MB              0,04%
6    rosemary        752,88 MB             29,16%

Espaço total ocupado: 2581,57 MB
Espaço médio ocupado: 430,26 MB

O arquivo de entrada deve ser lido uma única vez, e os dados armazenados em memória, caso sejam necessários, de forma a agilizar a execução do programa. A conversão da espaço ocupado em disco, de bytes para megabytes deverá ser feita através de uma função separada, que será chamada pelo programa principal. O cálculo do percentual de uso também deverá ser feito através de uma função, que será chamada pelo programa principal.


Um comentário:

  1. #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created on Thu Jan 20 13:42:41 2022

    @author: wanderson
    """
    #Lista de ips permitidos
    ip_validos = open('ips_validos.txt','r') #arquivo criado previamente
    lista_validos = ip_validos.readlines()
    #Tratamento de dados da lista
    for index in range(len(lista_validos)):
    lista_validos[index] = lista_validos[index].rstrip('\n')

    #Lista de ips a serem avaliados
    ips_avaliar = open('ips_avaliar.txt','r') #arquivo criado previamente
    lista_avaliar = ips_avaliar.readlines()
    #Tratamento de dados da lista
    for index in range(len(lista_avaliar)):
    lista_avaliar[index] = lista_avaliar[index].rstrip('\n')

    #Criando os arquivos onde serão gravados os dados de saida
    logip_validos = open('logip_validos.txt','w+')
    logip_invalidos = open('logip_invalidos.txt','w+')

    #Cabeçalho dos arquivos de saida
    logip_validos.write('[Endereços válidos:]\n')
    logip_invalidos.write('[Endereços inválidos:]\n')

    #Analise e gravação de dados
    for ip in lista_avaliar:
    if lista_validos.count(ip) == 0:
    logip_invalidos.write(ip+'\n')
    else:
    logip_validos.write(ip+'\n')

    logip_validos.close()
    logip_invalidos.close()

    ResponderExcluir