Foros Python

Versión completa: lanzar script desde otro script
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2 3
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
Hola. ¿Se detiene sin ningún error? ¿Por qué usas un hilo y por qué lo lanzas como un demonio?

Saludos.
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
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.
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)
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.
He hecho lo que me has dicho y sigo obteniendo el mismo error
¿Qué programa estás utilizando para generar un ejecutable? ¿Qué versión de Python y de requests? (Puedes ver esta última utilizando requests.__version__).
exe py2exe
python 2.7.13
requests 2.13.0
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.
Páginas: 1 2 3