#!/usr/bin/env python3 import argparse import http.server import os import sys def main(): parser = argparse.ArgumentParser() parser.add_argument('--bind', '-b', metavar='ADDRESS',default='', help='specify alternate bind address (default: all interfaces)') parser.add_argument('--directory', '-d', default=os.getcwd(), help='specify alternate directory (default: current directory)') parser.add_argument('port', action='store', default=8000, type=int, nargs='?', help='specify alternate port (default: 8000)') args = parser.parse_args() class app(http.server.SimpleHTTPRequestHandler): def __init__(self, request, client_address, server): super().__init__(request, client_address, server, directory=args.directory) with http.server.ThreadingHTTPServer((args.bind, args.port), app) as httpd: try: httpd.serve_forever() except KeyboardInterrupt: sys.exit() if __name__ == '__main__': main()