How to create a simple HTML page with Python

Asked

Viewed 33 times

0

Good night. I’m solving all the Pythonbrasil lists, I’m on Listadeexerciciosprojetos 1. I managed to solve the problems but I’m not able to assemble the HTML page, I haven’t programmed for a long time I’m very rusty.

To generate the PDF I used the code.

with open('Controles_Disco.txt','w+') as file:
    file.write('alexandre\t456123789\n'
               'anderson\t1245698456\n'
               'antonio\t123456456\n'
               'carlos\t91257581\n'
               'cesar\t987458\n'
               'rosemary\t789456125')

To process the PDF I used the code:

    def conversorByteMegabyte (bytes):
    valor=bytes/1048576
    return(valor)

with open('Controles_Disco.txt', 'r') as file:
    espaco_disco_ocupado = 0
    media_espaco_ocupado = 0
    linhas = file.readlines()# Lendo Linhas do arquivo
    nomes = ['']*len(linhas) # Listas de nomes
    numeros = [0]*len(linhas) # Listas de valores
    nomes_numeros = [('',0)]*len(linhas) #Lista de um novo tipo de dados para auxiliar na ordenação
    i = 0 #Variavel para percorrer linha dentro do primeiro For
    j = 0 #Variavel para percorrer linha dentro do segundo For

    for linha in linhas: # Percorre lista de linhas
        palavra = ""
        for caracterer in linha:   #percorre caracteres na linha
            if caracterer == '1' or caracterer == '2' or caracterer == '3' or caracterer == '4' or \
                    caracterer == '5' or caracterer == '6' or caracterer == '7' or caracterer == '8' or \
                    caracterer == '9' or caracterer == '0': #Se caracter for numero concatena o valor atual com o novo
                palavra = palavra + caracterer
        palavra = int(''.join(palavra))

        if i < len(linhas):
            numeros[i] = palavra
            i += 1

    for linha in linhas: #Criando lista de nomes semelhante aos numeros
        palavra=""
        for caracterer in linha:
            if caracterer != '\t':
                palavra = palavra + caracterer
            else:
                break
        if j < len(linhas):
            while len(palavra) < 11: #Nivelando tamanho da palavra para ficar tudo enquadrado
                palavra = palavra + ' '
            nomes[j] = palavra
            j += 1


    for x in range(len(linhas)): #Popula o novo tipo de dados com nome e valores
        nomes_numeros[x] = f'{(nomes[x].title())}', conversorByteMegabyte(numeros[x])

    nomes_numeros = sorted(nomes_numeros, key = lambda nomes: nomes[1], reverse = True) #Ordena Lista pelo segundo atributo da Tupla

    for numero in numeros: # Calculos Espaço Ocupado
        espaco_disco_ocupado += conversorByteMegabyte(numero)

    media_espaco_ocupado = espaco_disco_ocupado / len(linhas) #Calculos espaço medio usado

    linha_imprimir=[]
    with open ('Relatorio_Controles_disco.txt','w+') as file:
        linha_imprimir.append('ACME Inc.               Uso do espaco em disco pelos usuarios\n\------------------------------------------------------------------------' + '\n'
                              'Nr.\tUsuario\t\tEspaco utilizado MB\t\t% do uso\n')

        for h in range(len(linhas)):
            linha_imprimir.append(f'{h+1}\t'
                                  f'{nomes_numeros[h][0]}\t\t'
                                  f'{round(nomes_numeros[h][1],2)}\t\t\t\t'
                                  f'{round((nomes_numeros[h][1]/espaco_disco_ocupado)*100,2)}'
                                  f'\n')
        linha_imprimir.append(f'\nEspaco total ocupado:{round(espaco_disco_ocupado,2)}\n'
                              f'Espaco medio ocupado:{round(media_espaco_ocupado,2)}')

        for letra in linha_imprimir:
            file.write(letra)

I tried to Generate HTML by typing the TAGS but it doesn’t work, it generates the HTML file but is empty.

If you find points for optimization please let me know !

  • You could post the code you’ve already done to generate HTML and it’s blank?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.