Hosting a web server and sharing the content among the users using Python is very simple. Any default installation of Python includes a module called SimpleHTTPServer. We can make use of this module to start python and host a web server on any port as we wish. Practically speaking this is very useful to share files inside your local network, implementing this tiny but hugely useful HTTP server is very simple, its just a single line command.

This serves files from the current directory and any of its subdirectories. It assumes that all files are plain text files unless they have the extension ".html" in which case it assumes they are HTML files, The GET and HEAD requests are identical except that the HEAD request omits the actual contents of the file.

If you want to serve files from the current directory, just give following command on the shell prompt and open a browser at http://localhost:8080.

$ python -m SimpleHTTPServer 8080

If you have a cgi script located in /cgi-bin/myscript.py, you can test it by giving

$ python -m CGIHTTPServer

and going at http://localhost:8080/myscript.py

Notice that this will work for non-Python CGI scripts too!

The advantage of using CGIHTTPServer is that you will get the logs and the error messages in a shell window and not in a log file. This is of invaluable help during debugging.

The server ignores drive letters and relative path names (such as ‘..’). However, it does not implement any other access control mechanisms, so be careful how you use it.