В браузере с помощью CGI скрипт выводит строки одна за одной, на перенос строки не реагирует

Запускаю python скрипт в CGI, выводит то, что мне надо, но вот отображение не очень. Все строки которые выводит, идут друг за другом, вот так: test.ru - AAAAAAAAAAAAAA,10.0.0.12 test.ru - BBBBBBBBBBBBBB,10.0.0.112 В консоли и в pycharm отображается как надо:

test.ru - AAAAAAAAAAAAAA,10.0.0.12
test.ru - BBBBBBBBBBBBBB,10.0.0.112

Сам скрипт вот такой:

#!/usr/bin/python3
import os
import paramiko
import datetime
import cgi

form = cgi.FieldStorage()
name = form.getvalue('mac')

print("Content-type: text/html\r\n\r\n")

host = 'test'
user = 'test'
port = 22
secret = 'test'

now = datetime.datetime.now()

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=user, port=port, password=secret)
stdin, stdout, stderr = client.exec_command('cat /etc/openvpn/hosts.addr')
data = stdout.read() + stderr.read()

with open('/var/www/1/100.txt', 'wb') as f:
    f.write(data)

i=0
with open('/var/www/1/100.txt', encoding='utf-8') as file:
    for line in file:
        list_words = line.split()
        i=i+1
        if name in line:
            print(host + ' - '  + line)

Добавление '\n' в последний принт, ни как вообще не сказывается на выводе. Куда копать?


Ответы (1 шт):

Автор решения: kevin

Потому что браузер и консоль - это разные вещи. Хотите чтобы в браузере было всё с переводами строк? Не проблема... Приведите вывод к такому формату и будет вам счастье в браузере.

<pre>
test.ru - AAAAAAAAAAAAAA,10.0.0.12 (\n)
test.ru - BBBBBBBBBBBBBB,10.0.0.112 (\n)
...
</pre>

Или второй вариант, замените ваш '\n' на '<br>'. Всё дело в том, что браузер собирает контент согласно тегов, и на переводы строк он не обращает внимания, можно весь HTML в одну строчку сложить, при этом ничего в отображении не поломается.

→ Ссылка