Me dio por realizar esta función con el objeto de que a alguien le sirva.
Saludos!.
(Obtiene el DV del RUN chileno).
#!/usr/bin/env python
# -*- coding: utf8 -*-
"""
Script para obtener el digito verificador del RUN
e imprime todo el RUN
@author: felcontreras@gmail.com
"""
import os
import sys
def number_format(num):
"""
Funcion la cual realiza el formateo del numero
dejandolo asi separado por puntos.
(USO SIMPLE)
"""
numero = str(num)
i = 0
numfinal = ""
numdex = ""
for concat in reversed(numero):
numfinal += concat
if i == 2:
numfinal += "."
i = 0
else:
i += 1
for numreal in reversed(numfinal):
numdex += numreal
if numdex[0] == ".":
retorno = numdex[1:len(numdex)]
else:
retorno = numdex
return retorno
def obtienedv(run):
"""
Funcion la cual retorna el digito verificador
a su vez el run ya formateado.
Eso ya me voy a dormir.
"""
permitido = "1234567890"
total = 0
multiplo = 2
rutx = ""
for cambio in run:
if cambio in permitido:
rutx += cambio
for reverso in reversed(rutx):
total += int(reverso) * multiplo
if multiplo == 7:
multiplo = 2
else:
multiplo += 1
modulus = total % 11
verificador = 11 - modulus
if verificador == 10:
div = "k"
elif verificador == 11:
div = "0"
else:
if verificador < 10:
div = verificador
retorno = rutx+str(div)
return retorno
def abreArchivo(archivo):
"""
Funcion la cual lee el archivo de origen para la opcion -i
"""
abre = open(archivo, 'r')
arreglo = []
for linea in abre.readlines():
arreglo.append(obtienedv(linea))
abre.close()
return "\n".join(arreglo)
def creaArchivo(archivo, info):
"""
Funcion la cual crea el archivo de destino y almacena la información del archivo de entrada
"""
try:
cnuevo = open(archivo, 'w')
except:
print "Imposible escribir en archivo"
sys.exit()
cnuevo.write(info)
cnuevo.close()
return True
if '__main__' == __name__:
if "--help" in sys.argv:
print "Modo de uso:"
print sys.argv[0]+ " 123456789 # (run)"
print sys.argv[0]+ " -i archivo_entrada # Imprime en Pantalla | -o archivo_de_salida (opcional)"
sys.exit()
if len(sys.argv) > 2:
if "-i" in sys.argv:
try:
archivo = sys.argv[sys.argv.index("-i")+1]
except IndexError:
print "Debes definir el archivo a leer"
sys.exit()
runs = abreArchivo(os.getcwd()+"/"+archivo)
if "-o" in sys.argv:
try:
anuevo = sys.argv[sys.argv.index("-o")+1]
creaArchivo(anuevo, runs)
except:
print "Imposible crear el archivo de salida."
sys.exit()
else:
print runs
elif len(sys.argv) == 2:
print obtienedv(sys.argv[1])
else:
print sys.argv[0]+" --help. Para obtener mayor infromacion."
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario