[pyar] xml.etree.ElementTree

Federico Brest federiconbrest en gmail.com
Lun Dic 16 11:19:30 -03 2019


Muchas gracias por responder tan pronto :)
Va de nuevo el código completo:

#import json
import requests
import io
import xml.etree.ElementTree as ET

def validar_cuit(cuit):
    # validaciones minimas
    if len(cuit) != 11:
        #print("False")
        return False

    base = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]

    #cuit = cuit.replace("-", "") # remuevo las barras

    # calculo el digito verificador:
    aux = 0
    for i in range(10):
        aux += int(cuit[i]) * base[i]

    aux = 11 - (aux - (int(aux / 11) * 11))

    if aux == 11:
        aux = 0
    if aux == 10:
        aux = 9

    #print("True")
    return aux == int(cuit[10])

def getInfoFromApi(cuit):
    custom_header = {
        'usuario_apikey': "Q2syVkQ2NW1UN2c3MWREWGSDDSWNQeWxVRnJVUT09",
        'Cookie':
"__cfduid=de5890d2d1645d87b18692a6ad91d6adsrtvcsf1576011069;
PROVEEDOR=l5r3dteuh2rkge4t9qm85tl8sm; ROUTEID=.1",
    }

    url = 'https://informe.unproveedor.com/api/informes/solicitar/' +
str(cuit)
    args = {'formato':'xml', 'procesar_forzado':'1', 'cuit': cuit }

    response = requests.get(url, headers=custom_header, data=args)
    tree = ET.parse(response.text)
    root = tree.getroot()
    #content = response.json()

    print("-- Status Code:", response.status_code)

    return content

def saveInfo(content, filename):
    with io.open(filename, 'w', encoding='utf8') as file:
        #json.dump(content, file, indent=4, ensure_ascii=False)
        file.write(response.text)

if __name__ == '__main__':
    cuit = input("Ingrese un numero de cuit: ")

    print("- Obteniendo información de", cuit)
    info = getInfoFromApi(cuit)

    cuitValido = validar_cuit(cuit)
    if cuitValido == False:
        print("El Cuit ",cuit," es Invalido")
        print("Presione una tecla para Finalizar...")
        msvcrt.getch()
    else:
        print("cuil válido")

    filename = cuit + '.xml'
    saveInfo(info, filename)
    print("- Guardado en", filename)

    print("Presione una tecla para finalizar...")
    msvcrt.getch()

Abrazo, y nuevamente muchas gracias.

El lun., 16 dic. 2019 a las 11:14, Lucas Paiva (<lucaspaiva.ar en gmail.com>)
escribió:

> Como estas? lo que pasa que la cosa esta justamente en la función que no
> estas mostrandonos, si tiene las credentials del cliente sacaselas pero
> mostranos como traes los datos de la api.
> De todas maneras vos decis :
> "cuando se supone que supone que deberìa crear un XML con lo que me
> devuelve la API, lo que esta haciendo es buscar un archivo local con ese
> nombre y me lo muestra en la consola...."
>
> Y la funcion siguiente hace exactamente eso:
>
> ef saveInfo(content, filename):
>     with io.open(filename, 'w', encoding='utf8') as file:
>         file.write(response.text)
>
> Aca estas escribiendo un archivo y luego imprimir el contenido por
> pantalla. y por lo que se entiende del resto del codigo lo estas creando
> con extension .XML
>
> De todas maneras si mal no recuerdo para escribir un archivo XML valido,
> deberias hacer algo como:
> Importar ET de element.etree y hacer algo como :
> my_data = ET.tostring(res_de_api_o_content_xml)
> file = ipen("sarasa.xml","w)
> file.write(my_data)
>
> Sory si no esta todo correcto , lo escribí asi nomas sin probar ningún
> código.
>
> Saludos.
>
> Lucas
>
> El lun., 16 dic. 2019 a las 11:02, Federico Brest (<
> federiconbrest en gmail.com>) escribió:
>
>> Hola gente,
>> Hic eel siguiente script, pero estoy teniendo problemas...cuando se
>> supone que supone que deberìa crear un XML con lo que me devuelve la API,
>> lo que esta haciendo es buscar un archivo local con ese nombre y me lo
>> muestra en la consola....
>> Algune podrá darme una mano?
>> Envío el código en cuestión:
>>
>> def saveInfo(content, filename):
>>     with io.open(filename, 'w', encoding='utf8') as file:
>>         file.write(response.text)
>>
>> if __name__ == '__main__':
>>     cuit = input("Ingrese un numero de cuit: ")
>>
>>     print("- Obteniendo información de", cuit)
>>     info = getInfoFromApi(cuit)
>>
>> ''' getInfoFromApi es otra funcion que esta declarada en el script. No la
>> transcribo porque estan las key de acceso de lcliente...de todas formas,
>> esa funcion anda '''
>>
>>     cuitValido = validar_cuit(cuit) #esta es otra funcion que esta
>> declarada en el script
>>     if cuitValido == False:
>>         print("El Cuit ",cuit," es Invalido")
>>         print("Presione una tecla para Finalizar...")
>>         msvcrt.getch()
>>     else:
>>         print("cuil válido")
>>
>>     filename = cuit + '.xml'
>>     saveInfo(info, filename)
>>     print("- Guardado en", filename)
>>
>>
>> Desde ya muchas gracias!!
>>
>> --
>> *          Ing. Federico N. Brest*
>>   Ingeniero en Sistemas de Información
>>             Becario Investigador
>>      Universidad Tecnológica Nacional
>>       Facultad Regional Buenos Aires
>>
>> “*¿El éxito es la meta? Pienso que no. La meta es conseguir, defender y
>> mantener nuestra libertad*” - Richard Stallman
>> *P* *Antes de imprimir este mensaje, piense si realmente es necesario.
>> ¡Cuidemos nuestro Ambiente!*
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar



-- 
*          Ing. Federico N. Brest*
  Ingeniero en Sistemas de Información
            Becario Investigador
     Universidad Tecnológica Nacional
      Facultad Regional Buenos Aires

“*¿El éxito es la meta? Pienso que no. La meta es conseguir, defender y
mantener nuestra libertad*” - Richard Stallman
*P* *Antes de imprimir este mensaje, piense si realmente es necesario.
¡Cuidemos nuestro Ambiente!*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20191216/59c3746a/attachment-0001.html>


Más información sobre la lista de distribución pyar