как открыть файл вместо того, чтобы вводить в переменные сокеты python - PullRequest
0 голосов
/ 12 декабря 2018

у меня есть этот кусок кода на python, где я показываю привет мир, когда я запускаю свой веб-сокет

f = open("index.html")
        http_response = """\
    HTTP/1.1 200 OK

    Hello, World!
    """

теперь мой вывод в браузере отображается как

Hello, World!

, но яхочу, чтобы html-скрипт в переменной f отображался, как я могу сделать это, я попытался объединить, но, похоже, мой код для объединения не сработал, это

    http_response = """\
HTTP/1.1 200 OK """ + f.read()

1 Ответ

0 голосов
/ 12 декабря 2018

Должна быть одна пустая строка между блоком заголовка и телом.Вы не оставили эту пустую строку.

Один из способов - просто объединить нормальные строки:

http_response = "HTTP/1.1 200 OK\n\n" + f.read()

Другой способ - использовать format или %:

http_response = "HTTP/1.1 200 OK\n\n%s" % f.read()

Еще один способ - использовать новые f-строки:

http_response = f"""\
HTTP/1.1 200 OK

{f.read()}\
"""

Есть и другие (например, соединение массива строк и т. Д.), Но какой бы метод вы ни использовали, вам нужно убедиться, чтоэтот протокол HTTP соблюдается, что требует наличия этой пустой строки.

Также обратите внимание, что если f.read() не производит текст, вам понадобятся заголовки, чтобы описать то, что вы передаете, и, возможно, предпринять шаги длязакодируйте это правильно.Вы также были бы "хорошим пользователем сети", если вы вернете правильный Content-Length, если вы это знаете.См. Википедия для хорошего обзора HTTP и связанных RFC, если вы хотите узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...