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.
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:

  1. import requests
  2. from os.path import join, abspath
  3. requests.utils.DEFAULT_CA_BUNDLE_PATH = join(abspath('.'), 'cacert.pem')


Luego compilar nuevamente (con py2exe o PyInstaller), copiar el archivo C:\Python27\Lib\site-packages\requests\cacert.pem y pegarlo junto con tu ejecutable para que pueda ser encontrado por Requests. 

Espero que te resulte.

Un saludo.
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.
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__).
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:

  1. import requests
  2. from os.path import join, abspath
  3.  
  4. CACERT_PATH = join(abspath('.'), 'cacert.pem')
  5.  
  6. r = requests.get("https://www.google.com", verify=CACERT_PATH)


Recuerda ubicar el archivo cacert.pem junto al ejecutable.

Saludos.
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)