Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
lanzar script desde otro script
#1
Bunas , ya tengo operativo el lector del dni , pero ahora necesito comprobar que en una determinada direccion web hay un determinado archivo (esto lo tengo hecho) , cuando se encuentra ese archivo tengo que lanzar el scrpt que hace la lectura local de los datos del dni ( esto tb esta hecho) , ahora lo que necesito es desde un scrip que esta comprobando que exista el archivo , cuando este este lanzar la lectura ( esto es lo que no me funciona porque no se como llamar al script del lector).

El modulo que leer los datos del dni lo llamo leer y la funcion que lo ejecuta se llama leer_dni()

en el otro script hago

import leer (ambos modulos estan en el mismo directorio)

y lo llamo asi : leer.leer_dni()

esto no hace nada

solucionado , no existia el archivo de control , por eso no se ejecutaba

Ahora funciona , pero tras tres comprobaciones se detiene
Este es mi codigo

import leer
import requests
import threading
import time


def espera():
while True:
existe = requests.get("direccion de la pagina )
if existe.status_code ==200:
print "llamada al lector y pausa de 10 segundos"
leer.leer_dni()
else:
print "No se ha pulsado leer "
print "comprobando..."
time.sleep(10)
pass
p = threading.Thread(target = espera,)
p.setDaemon(True)
p.start()

Como es obvio no voy a poner la direccion , pero eso funciona
Responder
#2
Hola. ¿Se detiene sin ningún error? ¿Por qué usas un hilo y por qué lo lanzas como un demonio?

Saludos.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Porque necesito que se este ejecuatndo mientras el pc este encendido , si lo lanzo asi si montarlo como un proceso a la segunda ejecucion se detiene

while i<1:
archivo= str(ippublica.get_ip())
if checkfile(ruta%archivo)==True:
os.startfile("C:\\LectorDocum\\dist\\leer.exe")
time.sleep(5)
else:
time.sleep(5)


Sin embargo este codigo desde la consola python esta funcionando sin problema , voy a probar a compilarlo a ver si se comporta igual

Cuando lo compilo y lanzo el exe , no funciona

http://ge.tt/5u1ITOj2

Dejo captura
Responder
#4
Aparentemente sería un error con el archivo cacert.pem de Requests, al ser compilado vía py2exe o PyInstaller, el módulo no puede encontrar el archivo.

Te dejo enlaces a algunas soluciones al mismo problema:
Básicamente deberías añadir el siguiente código a tu script:

Código:
import requests
from os.path import join, abspath
requests.utils.DEFAULT_CA_BUNDLE_PATH = join(abspath('.'), 'cacert.pem')

Luego compilar nuevamente (con py2exe o PyInstaller), copiar el archivo CTongueython27Libsite-packagesequestscacert.pem y pegarlo junto con tu ejecutable para que pueda ser encontrado por Requests. 

Espero que te resulte.

Un saludo.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
Este es el script completo


import os.path
import requests
from subprocess import call
import time
from os import listdir
from os.path import isfile, join, abspath
import getpass
import ippublica

ruta="la oculto por seguridad"


def checkfile(ruta):
existe=requests.get(ruta)
if existe.status_code == 200:
return True
else:
return False



i=0

while i<1:
archivo= str(ippublica.get_ip())
if checkfile(ruta%archivo)==True:
os.startfile("C:\\LectorDocum\\dist\\leer.exe")
time.sleep(2)
else:
time.sleep(2)
Responder
#6
Bueno, luego de las importaciones debes añadir el código anterior y hacer lo que indiqué en el mensaje anterior.

Por favor visita este enlace para saber cómo resaltar código Python en el foro, la indentación es muy importante.

Saludos.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#7
He hecho lo que me has dicho y sigo obteniendo el mismo error
Responder
#8
¿Qué programa estás utilizando para generar un ejecutable? ¿Qué versión de Python y de requests? (Puedes ver esta última utilizando requests.__version__).
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#9
exe py2exe
python 2.7.13
requests 2.13.0
Responder
#10
Bien, ahí pude chequearlo y correrlo correctamente indicando la ruta del archivo en cada llamada a get(), post(), etc. vía el parámetro verify:

Código:
import requests
from os.path import join, abspath

CACERT_PATH = join(abspath('.'), 'cacert.pem')

r = requests.get("https://www.google.com", verify=CACERT_PATH)

Recuerda ubicar el archivo cacert.pem junto al ejecutable.

Saludos.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 3 invitado(s)