problema con tipo de variable

David Asorey Álvarez forodejazz en yahoo.es
Vie Dic 5 08:52:27 CET 2003


 --- Ana Yndurain <yndu en telecable.es> escribió: 

> Hola a todos, sigo terminando mi pagina web, y me he
> encontrado con un
> nuevo problemilla
> 
> En un momento dado tengo unos cuanto checkbuttons
> para seleccionar unos
> ficheros a borrar.
> Estos checkbuttons los declaro de la siguiente
> manera:
> 
> <input type=checkbox name=CAdjuntoSelect[] value=%s>
> 
> Asi, al pasar los input al siguiente script, se me
> crea un vector q
> contiene los checkbox q esten seleccionados con sus
> correspondientes
> valores. Por lo tanto, solo tengo q recorrer el
> vector y borrar los
> archivos q se encuentren ahi.
> 
> Hasta aqui bien. El problema es cuando solo
> seleccionan un archivo,
> cuando intento hacer:
> 
> for i in form['CAdjuntoSelect[]']:
>     loquesea
> 
> me dice que:
> [... sigue ...]

Yo utilizo la herramienta CherryPy para desarrollar
web en Python, pero también me surge el mismo
"problema" (no es un problema realmente :-)

Esto es lo que yo hago:
Supongamos que en la variable "lista_archivos" vienen
los nombres de los ficheros que quieren borrar
(seleccionados en un 'checkbox'). Puede ocurrir lo
siguiente cuando recoges los datos y vas a procesar
esta lista:

1. No han seleccionado nada: la variable viene vacía o
sencillamente, no "viene".
2. Seleccionan un sólo 'checkbox': la variable NO es
una lista o tupla, probablemente sea un 'String'
3. Seleccionan varios 'checkbox': la variable es una
lista o tupla.

Este es el pseudo-código que yo utilizo para estos
menesteres:

from types import *

if not lista_archivos:
    # Sacamos aviso, o reenviamos a otra página
    return "Selecciona algo, gañán ;-)"

if type(lista_archivos) == StringType:
    # Convierto la variable lista_archivos, que 
    # es un string en una tupla:
    lista_archivos = (lista_archivos, )

# Ahora recorremos la variable lista_archivos
# con la seguridad de que es una lista o tupla,
# y que podemos recorrerla sin problemas.

for arch in lista_archivos:
    # Proceso el archivo:
    procesar_archivo(arch)

Un saludo.

David



_______________________________________________________________
Yahoo! Sorteos
¡Ya puedes comprar Lotería de Navidad!
http://yahoo.ventura24.es/




Más información sobre la lista de distribución Python-es