[Python] Identificador de tipos de archivo

Iniciado por khyv123, Julio 20, 2011, 02:00:52 PM

Tema anterior - Siguiente tema

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

Julio 20, 2011, 02:00:52 PM Ultima modificación: Julio 23, 2011, 01:43:28 PM por khyv123
Este code sirve para identificar el tipo de un archivo en caso de que no se sepa la extensión del mismo). Soporta los siguientes tipos:

- Archivos de imagen: 'rgb', 'gif', 'pbm', 'pgm', 'ppm', 'tiff', 'rast', 'xbm', 'jpeg', 'bmp' y 'png'.
- Archivos de audio: 'aifc', 'aiff', 'au', 'hcom', 'sndr', 'sndt', 'voc', 'wav', '8svx', 'sb', 'ub' y 'ul'.
- Archivos comprimidos: 'zip' y 'tar'.
- Archivos de texto plano

Código: python

# ******************************************
#     Autor : khyv123 
#     Fecha de creacion : 20/07/11
#     Creado para : www.underc0de.org
# ******************************************

import imghdr,sndhdr
from zipfile import is_zipfile
from tarfile import is_tarfile
from sys import argv,exit
from os import path,rename

def options():
print '\nSintaxis: fileID.py -f (nombre_archivo) [-c]'
print '\n\t-f archivo\t\tArchivo a comprobar.'
print '\t-c\t\t\tCambiar extensiones reconocidas.'

if len(argv)>=2:

des=ext=file=''
ch_ext = False

for opt in argv[1:]:
if opt.lower()=='-f':
file=argv[int(argv[1:].index(opt))+2]
elif opt.lower()=='-c':
ch_ext= True

if file=='':
exit('\nArchivo no especificado.')
elif not path.exists(file):
exit('\nArchivo no encontrado.')

if imghdr.what(file)!=None:
ext=imghdr.what(file)
des=imghdr.what(file)+' (Archivo de imagen)'
elif sndhdr.what(file)!=None:
ext=sndhdr.what(file)[0]
des=sndhdr.what(file)[0]+' (Archivo de audio)'
elif is_zipfile(file)=='True':
ext='zip'
des='zip'+' (Archivo comprimido)'
elif is_tarfile(file)=='True':
ext='tar'
des='tar'+' (Archivo comprimido)'
else:
data = open(file,'r').read(512)
char=map(chr,range(32,127))+list('\n\t\r\x08')
if data!='':
if [elem for elem in data if not elem in char]==[]: des='Archivo de texto plano.'
else:
des='Archivo vacio.'


if des!='':
if ch_ext==True and ext!='':
if file.count('.')!=0:
rename(file,file[0:file.find('.')+1]+ext)
else:
rename(file,file+'.'+ext)
exit('\n ' + des)
else:
exit('\nTipo de archivo no reconocido.')
else:
options()




Ejemplo de uso:
Código: text

>> D:\> fileID.py -f (nombre_archivo) [-c]
jpg (Archivo de imagen)


-f -> Archivo a comprobar.
-c -> Cambiar extensiones reconocidas.

Muy interesante y nunca antes visto, al menos por mi.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login