Hur man använder Python SimpleHTTPServer

How Use Python Simplehttpserver



Webbserverens huvuduppgift är att hantera HTTP -begäranden från klienten. Den väntar på att HTTP -förfrågningarna kommer från den specifika IP -adressen och portnumret, hanterar begäran och skickar tillbaka klientens svar. Python använder SimpleHTTPServer modul för att skapa en webbserver direkt och enkelt servera innehållet i filen från servern. Det kan också användas för fildelning. För detta måste du aktivera denna modul med platsen för de delbara filerna. Denna modul levereras med Python -tolk. Du behöver inte installera det. Eftersom denna modul slås samman med http.server modul i python3, så du måste köra http.server för att köra webbservern i python3. Hur webbserver kan användas för att hantera HTTP -begäran och dela filer har visats i den här självstudien.

Kör webbservern från terminalen

Kör följande kommando för att köra webbservern från terminalen. Om inget portnummer har definierats i kommandot startar webbservern som standard på 8000 port.







$ python3 -m http.server



Följande utdata visas om webbservern startas korrekt. CTRL+C trycks in för att stoppa servern.




Kör följande kommando för att starta webbservern vid 8080 -porten.





$ python3 -m http.server 8080

Följande utdata visas om webbservern startas vid 8080 -porten.



Kör webbservern med Python -skript

Kör följande kommandon för att skapa en mapp med namnet webb och gå till mappen. Alla skriptfiler och HTML -filer i den här självstudien skapas i den här mappen.

$ mkdir web

$CDwebb

Skapa en HTML -fil med namnet testHTML.html inuti webb mapp med följande skript. Denna fil kommer att serveras från webbservern senare.

testHTML.html

< html >

< huvud >

< titel >

Testa Python -webbservern

</ titel >

</ huvud >

< kropp >

< Centrum >

< img src='logo.jpeg' allt='Bild inte hittad'/>

< h2 stil='färg: grön'>Grattis! Din webbserver körs framgångsrikt.</ h2 >

< sid >Besök< till href='www.linuxhint.com'>LinuxHint.com</ till >för fler självstudier om Python</ sid >

</ Centrum >

</ kropp >

</ html >

Exempel 1: Kör webbservern i det specifika portnumret

Skapa en pythonfil med följande skript för att köra webbservern på 8008 -porten. http.server modul har importerats för att köra webbservern och SocketServer modul har importerats för att hantera HTTP -begäran som kommer från 8080 -porten. Ett objekt som heter Hanterare har skapats för att hantera HTTP -begäranden. evigt() funktion kallas för att köra webbservern. Inget uppsägningsvillkor har lagts till i skriptet. Så, skriptet kommer att generera ett fel när användaren försöker stoppa servern.

# Importera servermodul

importerahttp.server

# Importera SocketServer -modul

importerasocketserver


# Ställ in portnumret

hamn= 8080

# Skapa objekt för hantering av HTTP -förfrågningar

Hanterare=http.server.SimpleHTTPRequestHandler


# Kör servern för alltid för att hantera HTTP -begäranden

medsocketserver.TCPServer(('',hamn),Hanterare) somhttpd:

skriva ut('Webbserver körs på http: // localhost:%s'%hamn)

httpd.serve_forever()

Produktion

Följande utdata kommer att visas efter att ovanstående skript har körts.


Listan över filer och mapp för skriptplatsen visas om följande URL körs från webbläsaren.

http: // lokal värd: 8080

Om användaren trycker på CTRL+C från terminalen eller trycker på stoppknappen från PyCharm -redigeraren, visas följande felmeddelande. Detta problem har lösts i nästa exempel på denna handledning.

Exempel 2: Kör webbservern med portnumret definierat av kommandoraden

Skapa en pythonfil med följande skript för att köra en webbserver vid den specifika porten om kommandoradsargumentet ger portnumret; annars kommer 5000 att användas som standardport. sys modul har importerats i skriptet för att läsa kommandoradsargumentvärdena. försök-utom block har lagts till i skriptet för att hantera felet när användaren försöker stoppa servern. Om undantaget KeyboardInterrupt visas efter att servern körts, kommer stänga() funktion kommer att kallas för att stoppa webbservern.

# Importera servermodul

importerahttp.server

# Importera SocketServer -modul

importerasocketserver

# Importera sys -modul

importera sys


Prova:

# Ställ in portnumret

om sys.argv[1:]:

hamn= int(sys.argv[1])

annan:

hamn= 5000

# Ställ in IP -adressen

server adress= ('127.0.0.1',hamn)

# Skapa objekt för hantering av HTTP -förfrågningar

Hanterare=http.server.SimpleHTTPRequestHandler


# Kör webbservern för alltid för att hantera HTTP -begäranden

medsocketserver.TCPServer(('',hamn),Hanterare) somhttpd:

skriva ut('Webbserver körs på http: // localhost:%s'%hamn)

httpd.serve_forever()

# Stoppade servern

bortsett från KeyboardInterrupt:

httpd.server_close()

skriva ut('Servern är stoppad.')

Produktion

Följande utdata visas efter att man har kört ovanstående skript utan kommandoradsargumentvärde.

Följande utdata visas om kör HTML -filen som skapades i föregående steg från webbservern.

Öppna konfigurationsdialogrutan från Kör-menyn i PyCharm-redigeraren för att ställa in kommandoradsargumentvärdet. Parametrarfält används för att ställa in kommandoradsargumentet och 3000 anges här som argumentvärde.

Följande utdata visas om du kör skriptet igen efter att du har ställt in argumentvärdet.

Exempel 3: Kör webbservern med HTML-filen

Skapa en pythonfil med följande skript för att köra webbservern genom att definiera HTML -filen för basadressen. Värdnamnet och portnumret har definierats i början av skriptet. PythonServer class har definierat i skriptet för att visa HTML -filen i webbläsaren när webbservern börjar köras.

# Importera servermodulen

importerahttp.server


# Ställ in värdnamnet

VÄRD= 'lokal värd'

# Ställ in portnumret

HAMN= 4000


# Definiera klass för att visa webbserverns indexsida

klassPythonServer(http.server.SimpleHTTPRequestHandler):

deffår(själv):

om själv.väg == '/':

själv.väg = 'testHTML.html'

lämna tillbakahttp.server.SimpleHTTPRequestHandler.får(själv)


# Förklara objekt för klassen

webbserver=http.server.HTTPS -server((VÄRD,HAMN),PythonServer)


# Skriv ut webbservern

skriva ut('Servern startade http: //%s:%s'%(VÄRD,HAMN))


Prova:

# Kör webbservern

webbserver.serve_forever()

bortsett från KeyboardInterrupt:

# Stoppa webbservern

webbserver.server_close()

skriva ut('Servern är stoppad.')

Produktion

Följande utdata visas med det ovanstående skriptet.

Följande sida visas i webbläsaren om webbläsarens bas -URL för webbservern körs.

Slutsats

De olika sätten att implementera webbservrar med http. server modulen har visat sig i denna handledning för att hjälpa pythonanvändare att skapa en enkel webbserver i Python.