[SOLUCIONADO] Excepción con extensión de archivo

Iniciado por natalioruis, Febrero 05, 2016, 01:51:08 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 05, 2016, 01:51:08 PM Ultima modificación: Febrero 08, 2016, 02:08:18 AM por Gabriela
hola estoy aca modificando una app que hice hace un tiempito que filtra unos archivos y si son la extensión que quiero y el tamaño que quiero los guarda y sino los elimina..

el tema que estuve mirando los archivos que quiero filtrar y hay  unos que son muy pequeños pero que son de vídeo y si me interesan.... acá están los dos scripts que se encargan de corroborar tamaño y extensión


Código: python
def view_ext (archivo): 
#tupla de las extensiones deseadas
    extensiones = ('.avi','.mov','.jpg','.jpeg','.png', '.3gp', 'flv', 'wmv', 'mp4');
    ok = False;

    nombre, ext_temp = os.path.splitext(archivo); #recperamso la extensión del archivo a analizar
    ext_temp.lower();



    for i in extensiones :
   
        if (ext_temp == i ):
        ok= True;
        break;
   


    return ok;


def size_file (archivo):
    #esta funcion devuelve true si el tamaño dle arcivo esel deseado
    SIZE = 307200; # 300 Kb
    ok = False;
    a = os.path.getsize(archivo);

    if a >= SIZE :
        ok =True;


    return ok;



bien estas dos funciones son llamadas en otra parte de código donde si es la extensión y el tamaño hace lo que tiene que hacer...

lo que queria ver es si podia hacer una exepcion en la funcion SIZE_FILE para que si es un archivo de video no tenga en cuenta su tamaño y devuelva el OK EN TRUE...
como podría hacerlo con una excepcion???


Gracias.
..:: El Hombrecito del sombrero Gris ::..

El código que colocaste sólo son funciones, en ninguna parte está el código que elimina o guarda los archivos o donde se llaman las funciones. Así que puedes de como llames las funciones. Pero para lograr lo que quieres una de las muchas opciones sería modifiar la función que revisa el tipo de archivo y te lo devuelva en lugar de un True/False. Así luego de llamar la función, puedes verificar la extensión y a partir de ahí tomar la desición de eliminar o no el archivo.

Como sugerencias, en Python no es necesario terminar las líneas con un ;

Te puedes evitar el bucle:
Código: python
    for i in extensiones :
   
        if (ext_temp == i ):
        ok= True;
        break;


Con in

Código: python
if ext_temp in extensiones:
    print("esta en la lista")


Y como advertencia, ten en cuenta que splitext te devuelve algo así: .ext así que los últimos elementos que añadiste a la lista nunca van a cumplir la condición.

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

bien el splittext sabia l oque devolvia pero no necesito agregar nada a  lista sol osaber si esta la extension en las deseadas.. no agregue la invocacio nde las funciones prque pretendia solucionarlo en estas funciones y no en su invocacion..


gracias por el dat odel IN es muy util y ahorro codigo =)
..:: El Hombrecito del sombrero Gris ::..

En ese caso, tal como tienes la función view_ext no la veo muy útil para loq ue necesitas. Sería mejor si modificas la función para que retorne solo la extensión del archivo. Así puedes llamar a esta función antes de verificar el tamaño del archivo, así ya puedes tomar la desición dependiendo del tipo de archivo.

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta