Python - ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

 
Vista:

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por takezo (11 intervenciones) el 15/11/2016 22:03:23
hola,

tengo un programa en python que basicamente lee uns contenidos de un fichero y luego esos valores mutiplica x un número y añade el valor a una lineas.
El caso es que si ejecuto el script python manualmente via python mi-programa.py funciona perfectamente.
El problema viene cuando he ido a incluirlo en el cron del sistema. Lo he metido en el user root y el user de mi sesión, pero en ambos casos el script se ejecuta pero saca este error:

File "/home/takezo/scripts/mio/humidity9.py", line 21, in <module>
humout1 =float(humout1)* 1 + 0
ValueError: could not convert string to float:

Revisando el código, no soy capaz de saber qué pasa..? en manual si le meto un print del valor humout1 me da el valor numérico , osea es correcto.. pero en automaticno no tira.. ¿alguna idea..?

os paso el script

Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env /usr/bin/python
 
import subprocess
import re
import time
from datetime import datetime
import httplib
import logging
import logging.handlers
import argparse
import sys
import time
 
tempout = open("/home/usuario/scripts/mio/tempOut.txt")
tempout1 = tempout.read(8)
tempout1 = float(tempout1) * 1 + 0
tempout.close()
humout = open("/home/usuario/scripts/mio/humidityOut.txt")
humout1 = humout.read(7)
humout1= float(humout1) * 1 + 0
humout.close()
pressout = open("/home/usuario/scripts/mio/pressOut.txt")
pressout1 = pressout.read(9)
pressout1 = float(pressout1) * 1 + 0
pressout.close()
 
# print tempout
 
# upload data to mi_web
try:
        conn = httplib.HTTPConnection("iwgoogle.com")
        path = "/weatherstation/updateweatherstation.php?ID=IIDEUSER&PASSWORD=passuserid&dateutc=" + str(datetime.utcnow().isoformat()) + "&humidity=" + str(humout1) + "&tempf=" + str(tempout1) + "&baromin=" + str(pressout1) + "&softwaretype=raspberry-pi&status=updateraw"
        conn.request("GET", path)
        res = conn.getresponse()
# print path
 
        print "status: %s" % res.status
        print "------------------------------------------"
        print "reason: %s" % res.reason
        print "------------------------------------------"
        print "headers: %s" % res.getheaders()
        print "------------------------------------------"
        print "html: %s" % res.read()
 
except:
    print sys.exc_info()[2]

__________________


ayuda por favor!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 1.525
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por xve (1637 intervenciones) el 16/11/2016 07:38:37
Hola Takezo, la verdad es que no entiendo muy bien porque te falla cuando se ejecuta desde script... pero yo lo que haría seria generar una excepción para ver que valor tiene humout1 cuando se ejecuta desde cron... algo así:

1
2
3
4
5
6
try:
	humout1= float(humout1) * 1 + 0
except:
	f=file("/home/usuario/scripts/mio/error.txt","w")
	f.write(humout1)
	f.close()

Ya nos comentaras que valor genera...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por takezo (11 intervenciones) el 16/11/2016 09:52:29
¿donde coloco ese código..?
lo he puesto en la linea 26, pero ahí no hace nada... no se crea ni el fichero.. :-/
perdona por la pregunta, soy un poco nuevo con python..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por takezo (11 intervenciones) el 16/11/2016 10:20:57
hola,

al final, lo he colocado tal que así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import subprocess
import re
import sys
import time
from datetime import datetime
import httplib
 
import logging
import logging.handlers
import argparse
import sys
import time # this is only being used as part of the example
 
tempout = open("/home/usuario/scripts/mio/tempOut.txt")
tempout1 = tempout.read(8)
tempout1 = float(tempout1)* 1 + 0
tempout.close()
humout = open("/home/usuario/scripts/mio/humidityOut.txt")
try:
        humout1 = humout.read(9)
        humout1= float(humout1) * 1 + 0
except:
        f=file("/home/usuario/scripts/mio/error.txt","w")
        f.write(humout1)
        f.close()
humout.close()
pressout = open("/home/usuario/scripts/mio/pressOut.txt")
pressout1 = pressout.read(7)
pressout1 =float(pressout1)* 1 + 0
pressout.close()

ahora lo "chistoso" es que ejecutando el comando manualmente, me completa correctamente todo, pero de neuvo si va via cron el valor del campo q debe luego agregarse al path de la url lo deja en blanco :-(

que crruz de script!!!!

alguna idea..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 1.525
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por xve (1637 intervenciones) el 16/11/2016 12:47:40
Si, ahora no te da el error, pero te tiene que haber generado el archivo error.txt

Que contiene?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por takezo (11 intervenciones) el 16/11/2016 13:08:47
genera el archivo en blanco :-()
no hay contenido alguno dentro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 1.525
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por xve (1637 intervenciones) el 16/11/2016 16:01:13
Pues ahi tienes el problema... cuando lee el archivo, en algun momento la variable humout1 esta vacía, por eso el error!!!

Revisa el archivo o controlalo en el código para que no falle.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por takezo (11 intervenciones) el 16/11/2016 16:05:13
el archivo siempre tiene información.. quiero decir,q solo se modifica el contenido numérico para agregar otro valor pero entre q cambia un numero por otro el archivo mantiene el valor antiguo..

sabes si hay alguna forma de poder pegar el valor del archivo dentro del cambpo de la uri sin que al pegarlo me ponga saltos de linea..?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ValueError: could not convert string to float: - Solamente cuando se ejecuta en cron

Publicado por takezo (11 intervenciones) el 16/11/2016 16:43:46
pues al parecer era eso.. :-P
he modificado el tiempo de actualizacion del fichero y para q no se actualice el contenido al mismo tiempo q se carga este script y parece q ahora funciona! :-)

muchas gracias xve
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar