Page 1 sur 1

[python] lancement du script avec crontab

Posté : dim. 6 janv. 2019 10:50
par Frollo
Depuis quelques temps (depuis Strech ?) j'ai des problèmes d'encodage de mes scripts python (2.7).

J'ai remarqué que si un message doit s'afficher en console, lancé à la main ou depuis IDLE, il s'éxécute marche normalement, mais depuis crontab il plante (en fait on ne voit pas les conséquences de son exécution plutôt).
En cause, apparemment, les caractères accentués. Si on supprime tous les "print", là, les scripts s’exécutent... :|

Ci dessous l'en tête de mes scripts :

Code : Tout sélectionner

#! /usr/bin/python
# -*- coding: utf-8 -*-
 
#-------------------------------------------------------------------------
#   11/06/18    alerte mail journalière sur température >25
#-------------------------------------------------------------------------

import os
from os import path as os_path
import sys
import time
import MySQLdb   
import lib_mail

print "Caratère !"
puis

Code : Tout sélectionner


crontab -e

*/15 * * * python /home/pi/Documents/xx_mon_script.py

J'ai loupé quelque chose ?

Re: [python] lancement du script avec crontab

Posté : dim. 6 janv. 2019 11:14
par domi
Bonjour,

Je ne comprend pas bien ton problème, car "cron" n'étant pas une console, il est normal que les "print" ne s'affiche pas !

Re: [python] lancement du script avec crontab

Posté : dim. 6 janv. 2019 11:43
par Frollo
Évidemment que les print ne s'affichent pas, le problème est que cela fait planter le script, et qu'il s'exécute pas, alors que si on le lance il n'annonce aucun problème

Re: [python] lancement du script avec crontab  [RESOLU]

Posté : dim. 6 janv. 2019 12:05
par Frollo
Oups, il manquait un "*" dans la commande du cron :oops: :oops:
Autant pour moi...

vu avec un fichier test que m'aprettais à partager pour montrer le détail :

Code : Tout sélectionner

"""
#!/usr/bin/python
# -*- coding: utf-8 -*-

06/01/19    test print dans crontab
L. Michalski - janv. 2019
"""

# librairies
import os
from datetime import datetime
from os import path as os_path  

def datation():
    dt = datetime.now()
    horodate = dt.strftime("%Y-%m-%d_%H.%M.%S")
    print (horodate)
    return horodate


fic = datation()

# on se place à côté du fichier script
PATH=os_path.abspath(os_path.split(__file__)[0])
print PATH
os.chdir(PATH)

# on crée un fichier "datetime" pour voir l'execution du script
with open(fic,"a") as ecrit:
        ecrit.write("\n")
        ecrit.close()

print (u"caratère !")
et on programme le script :

Code : Tout sélectionner

*/1 * * * python /home/pi/Documents/190106_test_cron.py
et là, niet.

C'est normal en fait :

Code : Tout sélectionner

*/1 * * * * python /home/pi/Documents/190106_test_cron.py
Désolé du dérangement...

Re: [python] lancement du script avec crontab

Posté : mar. 19 févr. 2019 15:18
par Feldou
Salut, tu sembles avoir réglé le problème c'est cool

Bon à savoir quand tu testes des scripts avec le cron : un petit coup de nohup permet d'avoir les sorties pour ton debug :) sinon effectivement il les lance dans le silence le plus total