import http.server import socketserver import sys,os,urllib,html,io from http import HTTPStatus PORT = 8001 SimpleHTTPRequestHandler = http.server.SimpleHTTPRequestHandler class Handler(SimpleHTTPRequestHandler): def translate_path(self,path): print(path) r = SimpleHTTPRequestHandler.translate_path(self,path) print(r) return r def list_directory(self, path): """Helper to produce a directory listing (absent index.html). Return value is either a file object, or None (indicating an error). In either case, the headers are sent, making the interface the same as for send_head(). """ try: list = os.listdir(path) except OSError: self.send_error( HTTPStatus.NOT_FOUND, "No permission to list directory") return None list.sort(key=lambda a: a.lower()) r = [] try: displaypath = urllib.parse.unquote(self.path, errors='surrogatepass') except UnicodeDecodeError: displaypath = urllib.parse.unquote(path) displaypath = html.escape(displaypath) enc = sys.getfilesystemencoding() title = 'Directory listing for %s' % displaypath r.append('') r.append('\n') r.append('' % enc) r.append('%s\n' % title) r.append('\n

%s

' % title) r.append('
\n\n
\n\n\n') encoded = '\n'.join(r).encode(enc, 'surrogateescape') f = io.BytesIO() f.write(encoded) f.seek(0) self.send_response(HTTPStatus.OK) self.send_header("Content-type", "text/html; charset=%s" % enc) self.send_header("Content-Length", str(len(encoded))) self.end_headers() return f if __name__=="__main__": httpd = socketserver.TCPServer(("", PORT), Handler) print("serving at port", PORT) try: httpd.serve_forever() except KeyboardInterrupt: sys.exit()