Как запустить CGI «hello world» с помощью python http.server

Я использую Windows 7, python3.4.3. Я хотел бы запустить этот простой файл helloworld.py в моем браузере:

print('Content-Type: text/html') print( '<html>') print( '<head></head>') print( '<body>') print( '<h2>Hello World</h2>') print( '</body></html>') 

Что я делаю:

1) Перейдите в командную строку «C: \ Python» (где установлен мой питон)

2) запустить: python -m http.server

3) Получил мой firefox и набрал « http: // localhost: 8000 / hello.py »

Однако вместо «Hello World» браузер просто печатает содержимое файла hello.py.

Как я могу это исправить?

Благодаря!

  • Способ определения, если X и Y оба превышают 0
  • NameError: глобальное имя 'unicode' не определено - в Python 3
  • Создание вращающейся трехмерной земли
  • Pandas: фильтрация DataFrame с использованием groupby и функции
  • Значение списка Python задано в индексе, если индекс не существует
  • Power set и Cartesian Продукт набора python
  • Как я могу назвать шлюз API с учетными данными Cognito в Python
  • Установка TensorFlow в Windows (Python 3.6.x)
  • 2 Solutions collect form web for “Как запустить CGI «hello world» с помощью python http.server”

    Из документов http.server :

    CGIHTTPRequestHandler можно включить в командной строке, передав параметр – --cgi :

     $ python3 -m http.server --bind localhost --cgi 8000 

    Поместите свой скрипт в cgi_directories :

    По умолчанию это ['/cgi-bin', '/htbin'] и описывает каталоги для обработки как содержащие CGI-скрипты.

    Открыть в браузере:

     $ python -mwebbrowser http://localhost:8000/cgi-bin/hello.py 

    где hello.py :

     #!/usr/bin/env python3 print("Content-Type: text/html\n") print("<!doctype html><title>Hello</title><h2>hello world</h2>") 

    Я должен был сделать его исполняемым на POSIX: chmod +x cgi-bin/hello.py .

    Я сделал это некоторое время назад для Python2.7

     from BaseHTTPServer import BaseHTTPRequestHandler class GetHandler(BaseHTTPRequestHandler): def do_HEAD(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() def do_GET(self): x = self.wfile.write self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() # <--- HTML starts here ---> x("<html>") # <--- HEAD starts here ---> x("<head>") x("<title>Title goes here!</title>") x("</head>") # <--- HEAD ends here ---> # <--- BODY starts here ---> x("<body>") x("<p>This is a test.</p>") x("</body>") # <--- BODY ends here ---> x("</html>") # <--- HTML ends here ---> if __name__ == '__main__': from BaseHTTPServer import HTTPServer server = HTTPServer(('localhost', 777), GetHandler) print 'Starting server, use <Ctrl + F2> to stop' server.serve_forever() 

    Поэтому в Python 3 вам просто нужно изменить импорт

     from http.server import BaseHTTPRequestHandler class GetHandler(BaseHTTPRequestHandler): def do_HEAD(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() def do_GET(self): x = self.wfile.write self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() # <--- HTML starts here ---> x("<html>") # <--- HEAD starts here ---> x("<head>") x("<title>Title goes here!</title>") x("</head>") # <--- HEAD ends here ---> # <--- BODY starts here ---> x("<body>") x("<p>This is a test.</p>") x("</body>") # <--- BODY ends here ---> x("</html>") # <--- HTML ends here ---> if __name__ == '__main__': from http.server import HTTPServer server = HTTPServer(('localhost', 777), GetHandler) print('Starting server, use <Ctrl + F2> to stop') server.serve_forever() 

    Я не знаю прямо сейчас, если функция print в python 3

     print("") 

    или

     print "" 

    но я думаю, что это было с ()

    Изменить: это print ()

    Python - лучший язык программирования в мире.