2010-08-27 15 views
18

Estoy tratando de ejecutar una transmisión de Icecast utilizando un simple script de Python para elegir una canción aleatoria de la lista de canciones en el servidor. Estoy buscando agregar una interfaz de votación/solicitud, y mi host permite el uso de python para servir páginas web a través de CGI. Sin embargo, estoy colgando sobre cómo obtener los argumentos GET suministrados por el usuario. He tratado de la forma habitual con sys.argv:Obtener argumentos HTTP GET en Python

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

Pero golpear a http://example.com/index.py?abc=123&xyz=987 sólo devuelve "[ 'index.py']". ¿Hay alguna otra función que Python tenga para este propósito, o hay algo que deba cambiar con CGI? ¿Es lo que estoy tratando de hacer posible?

Gracias.

Respuesta

40

cgi.FieldStorage() debe hacer el truco para usted ... Devuelve un diccionario con la clave como el campo y el valor como su valor.

import cgi 
import cgitb; cgitb.enable() # Optional; for debugging only 

print "Content-Type: text/html" 
print "" 

arguments = cgi.FieldStorage() 
for i in arguments.keys(): 
print arguments[i].value 
+0

Gracias lalli, exactamente lo que necesitaba. – James