I'm starting to learn Python files. What suggestions would you give to improve the code and make it prettier or smaller?
"""
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.
"""
#1048576
relatorio = open('relatorio.txt', 'w')
arquivo = open('usuarios.txt')
total = cont = 0
lista = []
nomes = []
def main(relatorio):
global total, lista, nomes
conversor()
porcentagem = percentual()
relatorio.write('ACME Inc. Uso do espaço em disco pelos usuários\n')
relatorio.write('------------------------------------------------------------------------\n')
relatorio.write('Nr. Usuário Espaço utilizado % do uso\n')
relatorio.write('\n')
for i in range(cont):
relatorio.write('%i %s%7.2fMB%19.2f%%'%(i+1, nomes[i], lista[i], porcentagem[i]))
relatorio.write('\n')
media = total/6
espaço = (len('%.2f'%total) - len('%.2f'%media))*' '
relatorio.write('\n')
relatorio.write('Espaço total ocupado: %.2fMB\n'%(total))
relatorio.write('Espaço medio ocupado: %s%.2fMB'%(espaço ,media))
relatorio.close()
def conversor():
global lista, nomes, total, cont
while True:
x = arquivo.readline()
if x == '':
break
nomes.append(x[:16])
y = x[16:]
lista.append(int(y)/1048576)
total += int(y)
cont += 1
total/= 1048576
def percentual():
global total, lista
porcentagem = []
for i in range(cont):
porcentagem.append(lista[i]*100/total)
return porcentagem
main(relatorio)
arquivo.close()