So geben Sie das öffentliche Verzeichnis Python Simple HTTP Server an

Python verfügt über eine einfache HTTP-Serverfunktion für die WEB-Entwicklung. Es ist praktisch, aber unpraktisch, weil ich das öffentliche Skript direkt unter dem Verzeichnis ablegen muss, das ich veröffentlichen möchte (dachte ich), und ich habe gerade herausgefunden, wie man das öffentliche Verzeichnis angibt.

Fazit

(Unterstützt Python 3.7 und höher) Unten können Sie den relativen Pfad aus dem Skript in __DIRECTORY eingeben.

Zitiert aus Referenz 1

server.py


import http.server
import socketserver

PORT = 8000
DIRECTORY = "web"

class Handler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=DIRECTORY, **kwargs)


with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

Referenz 1

StackOverflow "How to run a http server which serves a specific path?" Ich habe gerade geschrieben, was ich wissen wollte.

Code Bedeutung

Wenn Sie kein öffentliches Verzeichnis angeben, können Sie den folgenden Code verwenden. Das Verzeichnis, in dem das Skript vorhanden ist, wird automatisch zum öffentlichen Verzeichnis. Durch Übergeben des Handlers an TCPServer () als Argument wird das entsprechende Argument in den Konstruktor von SimpleHTTPRequestHandler in TCPServer () eingefügt. Dieser __Handler ist also ein Bild wie ein Funktionszeiger __. (Das heißt, ist es ein "Handler"?)

Geben Sie kein Verzeichnis an.py



Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

Was wir also im Code der obigen Schlussfolgerung tun, ist, den Konstruktor von SimpleHTTPRequestHandler in TCPServer () aufzurufen, ohne die Gliederung zu ändern (* args und ** kwargs im folgenden Code). Der __ Konstruktor wird überschrieben, so dass "jedes angegebene Verzeichnis" an das Argumentverzeichnis übergeben wird.

Ich habe nur die schwierigen Teile untersucht.py



#Definieren Sie die Initialisierungsfunktion von SimpleHTTPRequestHandler neu
class Handler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=DIRECTORY, **kwargs)

#Ich möchte das wirklich tun, aber ich erhalte eine Fehlermeldung mit unzureichenden Argumenten.
#Das Argument ist TCP Server()Ich kann es hier nicht einfügen und ich weiß es nicht, weil ich es richtig hineingesteckt habe.
Handler = http.server.SimpleHTTPRequestHandler(directory="web")

#Das ist auch nicht gut. Natürlich wird gesagt, was Argumente sind.
Handler = http.server.SimpleHTTPRequestHandler(*args,directory="web",**kwargs)

Referenz 2

Aus den Python-Spezifikationen http.server image.png

damit! Ich möchte nur die Argumente in das unten stehende Verzeichnis stellen! image.png

Referenz 3

Lassen Sie uns eine abgeleitete Klasse mit Vererbung und super () in Python initiieren Ich habe den Teil des Überschreibens des Konstruktors nicht verstanden, also wurde ich versorgt. Verwendung von Python-Argumenten mit variabler Länge (* args, ** kwargs)

Recommended Posts

So geben Sie das öffentliche Verzeichnis Python Simple HTTP Server an
Einfacher HTTP-Server für Python
So erstellen Sie ein einfaches TCP-Server / Client-Skript
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
[Python Kivy] So erstellen Sie ein einfaches Popup-Fenster
So richten Sie einen einfachen SMTP-Server ein, der lokal in Python getestet werden kann
Ein einfacher HTTP-Client, der in Python implementiert ist
[Python] Wie man eine Klasse iterierbar macht
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
[Python] So invertieren Sie eine Zeichenfolge
Wie bekomme ich Stacktrace in Python?
So führen Sie Maya Python-Skripte aus
Senden Sie eine Nachricht von Slack an einen Python-Server
Richten Sie mit Python 3 einen einfachen HTTPS-Server ein
Lesen einer CSV-Datei mit Python 2/3
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
Starten Sie mit Docker einen einfachen Python-Webserver
So generieren Sie ein Python-Objekt aus JSON
So fügen Sie einen Suchpfad für Python-Module hinzu
So geben Sie die TLS-Version in Python-Anforderungen an
So legen Sie Attribute mit Mock of Python fest
So benachrichtigen Sie Discord-Kanäle in Python
So richten Sie einen lokalen Entwicklungsserver ein
Richten Sie einen einfachen SMTP-Server in Python ein
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So lesen Sie Dateien in verschiedenen Verzeichnissen
Wie man eine öffentliche Funktion in Pytest verspottet
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
So installieren Sie Python
So installieren Sie Python
So legen Sie das Schema in den Django-Datenbankeinstellungen fest
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
So richten Sie eine Python-Umgebung mit pyenv ein
Wie Sie das aktuelle Verzeichnis in Python in Blender kennen
[Wiedereinführung in Python] Importieren über das übergeordnete Verzeichnis
[Python] So erweitern Sie Variablen in einer Zeichenfolge
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
So erstellen Sie eine Django (Python) -Umgebung auf Docker
So erstellen Sie ein Python-Paket mit VS Code
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
[Python] So teilen und modularisieren Sie Dateien (einfach, Beispiel)
So speichern Sie eine von Python gekratzte Tabelle in CSV
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So führen Sie Django unter IIS auf einem Windows-Server aus
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
[Vagrant] Richten Sie einen einfachen API-Server mit Python ein
So hosten Sie die Web-App-Backend-Verarbeitung in Python mithilfe einer Leihserver-Subdomain
Verwendung von GitHub auf einem Server für mehrere Personen ohne Kennwort