공개 디렉터리 지정 방법 Python 간이 HTTP 서버
6837 단어 http.serverPython
편리하지만 공개용 스크립트를 공개하고 싶은 디렉터리 바로 아래에 놓아야 하기 때문에 불편하기 때문에 디렉터리를 지정하는 방법만 찾아봤다.
결론
(Python 3.7 이상 지원)
다음 DIRECTORY에 스크립트의 상대 경로를 입력하면 됩니다.
참조
server.pyimport 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()
참조 1
StackOverflow "How to run a http server which serves a specific path?"
나는 내가 알고 싶은 일을 썼다.
코드
공개 디렉터리를 특별히 지정하지 않은 경우 다음과 같은 코드가 될 수 있다.스크립트가 자동으로 존재하는 디렉터리가 공개 디렉터리가 됩니다.
TCPServer () 에 매개 변수로 교부하여 TCPServer () 에SimpleHTTPRequestHandler 구조기에 적당한 매개 변수를 넣었습니다.그래서 이 핸들러는 함수 포인터처럼(이게 바로'처리 프로그램'인가?)
디렉토리를 지정하지 않습니다.py
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
그렇다면 상기 결론의 코드는 무엇을 하고 있을까? TCPServer()에서 SimpleHTTPRequestHandler라고 부르는 구조기의 넓은 범위(이하 코드에서 말하는args와*kwargs)를 바꾸지 말고,
매개 변수directory에 '임의로 지정한 디렉터리' 를 전달하기 위해 구조기를 덮어씁니다.
어려운 곳만 알아봤어.py
#SimpleHTTPRequestHandlerの初期化関数を再定義
class Handler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, directory=DIRECTORY, **kwargs)
#ほんとはこれがやりたいのだけど、引数足りないエラーになる。
#引数はTCPServer()の内部で適当に入れているから、ここでは入れられない&わからない。
Handler = http.server.SimpleHTTPRequestHandler(directory="web")
#これもだめ。当然だがargsってなんだよって言われる。
Handler = http.server.SimpleHTTPRequestHandler(*args,directory="web",**kwargs)
참조 2
python 규격서 http에 따라server
네!나는 아래의directory에 파라미터를 넣고 싶다.
참조 3
python에서 계승과 슈퍼 () 를 사용하여 init 파생류를 만듭시다
구조기가 덮인 부분을 모르겠습니다. 잘 부탁드립니다.
Python의 가변 길이 매개 변수 사용 방법
args의 별표의 뜻을 모르기 때문에 당신의 보살핌을 받았습니다.
Reference
이 문제에 관하여(공개 디렉터리 지정 방법 Python 간이 HTTP 서버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/trickre/items/5cbbd32a9a7bcdfad8a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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()
공개 디렉터리를 특별히 지정하지 않은 경우 다음과 같은 코드가 될 수 있다.스크립트가 자동으로 존재하는 디렉터리가 공개 디렉터리가 됩니다.
TCPServer () 에 매개 변수로 교부하여 TCPServer () 에SimpleHTTPRequestHandler 구조기에 적당한 매개 변수를 넣었습니다.그래서 이 핸들러는 함수 포인터처럼(이게 바로'처리 프로그램'인가?)
디렉토리를 지정하지 않습니다.py
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
그렇다면 상기 결론의 코드는 무엇을 하고 있을까? TCPServer()에서 SimpleHTTPRequestHandler라고 부르는 구조기의 넓은 범위(이하 코드에서 말하는args와*kwargs)를 바꾸지 말고,매개 변수directory에 '임의로 지정한 디렉터리' 를 전달하기 위해 구조기를 덮어씁니다.
어려운 곳만 알아봤어.py
#SimpleHTTPRequestHandlerの初期化関数を再定義
class Handler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, directory=DIRECTORY, **kwargs)
#ほんとはこれがやりたいのだけど、引数足りないエラーになる。
#引数はTCPServer()の内部で適当に入れているから、ここでは入れられない&わからない。
Handler = http.server.SimpleHTTPRequestHandler(directory="web")
#これもだめ。当然だがargsってなんだよって言われる。
Handler = http.server.SimpleHTTPRequestHandler(*args,directory="web",**kwargs)
참조 2
python 규격서 http에 따라server
네!나는 아래의directory에 파라미터를 넣고 싶다.
참조 3
python에서 계승과 슈퍼 () 를 사용하여 init 파생류를 만듭시다
구조기가 덮인 부분을 모르겠습니다. 잘 부탁드립니다.
Python의 가변 길이 매개 변수 사용 방법
args의 별표의 뜻을 모르기 때문에 당신의 보살핌을 받았습니다.
Reference
이 문제에 관하여(공개 디렉터리 지정 방법 Python 간이 HTTP 서버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/trickre/items/5cbbd32a9a7bcdfad8a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)