Getting HTTP GET arguments in Python

Viewed 39419

I'm trying to run an Icecast stream using a simple Python script to pick a random song from the list of songs on the server. I'm looking to add a voting/request interface, and my host allows use of python to serve webpages through CGI. However, I'm getting hung up on just how to get the GET arguments supplied by the user. I've tried the usual way with sys.argv:

#!/usr/bin/python
import sys
print "Content-type: text/html\n\n"
print sys.argv

But hitting up http://example.com/index.py?abc=123&xyz=987 only returns "['index.py']". Is there some other function Python has for this purpose, or is there something I need to change with CGI? Is what I'm trying to do even possible?

Thanks.

2 Answers

For GET requests I prefer cgi.parse(). It returns a simple dictionary of lists.

import cgi
args = cgi.parse()

For example, the query string ?key=secret&a=apple is parsed as:

{'key': ['secret'], 'a': ['apple']}
Related