Comment spécifier un serveur HTTP simple Python de répertoire public

Python a une fonction de serveur HTTP simple pour le développement WEB. C'est pratique, mais ce n'est pas pratique car vous devez mettre le script de publication directement sous le répertoire que vous souhaitez publier (je pensais), et je viens de découvrir comment spécifier le répertoire public.

Conclusion

(Prend en charge Python 3.7 et supérieur) Ci-dessous, vous pouvez entrer le chemin relatif du script dans __DIRECTORY.

Cité de la référence 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()

Référence 1

StackOverflow "How to run a http server which serves a specific path?" J'ai juste écrit ce que je voulais savoir.

Signification du code

Si vous ne spécifiez pas de répertoire public, vous pouvez utiliser le code suivant. Le répertoire dans lequel le script existe devient automatiquement le répertoire public. En passant le gestionnaire à TCPServer () comme argument, l'argument approprié est placé dans le constructeur de SimpleHTTPRequestHandler dans TCPServer (). Donc, ce __Handler est une image comme un pointeur de fonction __. (Autrement dit, est-ce un "gestionnaire"?)

Ne spécifiez pas de répertoire.py



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

Donc, ce que nous faisons dans le code de la conclusion ci-dessus est d'appeler le constructeur de SimpleHTTPRequestHandler dans TCPServer () sans changer le contour (* args et ** kwargs dans le code ci-dessous), Le constructeur __ est écrasé afin que "tout répertoire spécifié" soit passé au répertoire d'arguments.

J'ai enquêté uniquement sur les parties difficiles.py



#Redéfinir la fonction d'initialisation de SimpleHTTPRequestHandler
class Handler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=DIRECTORY, **kwargs)

#Je veux vraiment faire cela, mais j'obtiens une erreur avec des arguments insuffisants.
#L'argument est TCP Server()Je ne peux pas le mettre ici et je ne sais pas parce que je l'ai mis correctement à l'intérieur.
Handler = http.server.SimpleHTTPRequestHandler(directory="web")

#Ce n'est pas bon non plus. Naturellement, on dit ce que sont les arguments.
Handler = http.server.SimpleHTTPRequestHandler(*args,directory="web",**kwargs)

Référence 2

À partir des spécifications python http.server image.png

alors! Tout ce que je veux faire est de mettre les arguments dans le répertoire ci-dessous! image.png

Référence 3

Lançons une classe dérivée en utilisant l'héritage et super () en python Je n'ai pas compris la partie de l'écrasement du constructeur, donc j'ai été pris en charge. Comment utiliser les arguments de longueur variable Python (* args, ** kwargs)

Recommended Posts

Comment spécifier un serveur HTTP simple Python de répertoire public
Serveur HTTP simple pour python
Comment créer un simple script serveur / client TCP
[Mac] Je souhaite créer un serveur HTTP simple qui exécute CGI avec Python
[Python Kivy] Comment créer une simple fenêtre pop-up
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
Un client HTTP simple implémenté en Python
[Python] Comment rendre une classe itérable
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
[Python] Comment inverser une chaîne de caractères
Comment obtenir stacktrace en python
Comment exécuter des scripts Maya Python
Envoyer un message de Slack à un serveur Python
Configurer un serveur HTTPS simple avec Python 3
Comment lire un fichier CSV avec Python 2/3
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Démarrez un serveur Web Python simple avec Docker
Comment générer un objet Python à partir de JSON
Comment ajouter un chemin de recherche de module Python
Comment spécifier la version TLS dans les requêtes python
Comment spécifier des attributs avec Mock of Python
Comment notifier les canaux Discord en Python
Comment configurer un serveur de développement local
Configurer un serveur SMTP simple en Python
[Python] Comment dessiner un histogramme avec Matplotlib
Comment lire des fichiers dans différents répertoires
Comment se moquer d'une fonction publique dans Pytest
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Comment installer Python
Comment installer python
Comment spécifier un schéma dans les paramètres de la base de données Django
Comment convertir / restaurer une chaîne avec [] en python
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Comment configurer un environnement Python à l'aide de pyenv
Comment connaître le répertoire actuel en Python dans Blender
[Réintroduction à python] Comment importer via le répertoire parent
[Python] Comment développer des variables dans une chaîne de caractères
[Python] Comment spécifier l'emplacement de téléchargement avec youtube-dl
Comment écrire un type liste / dictionnaire de Python3
Comment créer un environnement Django (python) sur Docker
Comment créer un package Python à l'aide de VS Code
[Python] Comment écrire une docstring conforme à PEP8
[Python] Comment fractionner et modulariser des fichiers (simple, exemple)
Comment enregistrer une table récupérée par python en csv
[Python] Résumé de la façon de spécifier la couleur de la figure
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Comment exécuter une commande à l'aide d'un sous-processus en Python
Comment exécuter Django sur IIS sur un serveur Windows
Comment créer un environnement Python sur Amazon Linux 2
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
[Vagrant] Configurer un serveur API simple avec python
Comment héberger le traitement du backend d'application Web en Python à l'aide d'un sous-domaine de serveur de location
Comment utiliser GitHub sur un serveur multi-personnes sans mot de passe