Comment effectuer une journalisation de toutes les activités effectuées par un script Python et tous les scripts qui y sont appelés?Sortie de script Python interactif stockée dans un fichier
J'avais plusieurs scripts Bash mais maintenant j'ai écrit un script Python qui appelle tous ces scripts Bash. Je voudrais que toutes les sorties produites à partir de ces scripts soient stockées dans un fichier.
Le script est un script Python interactif, il contient des lignes raw_input, donc je ne peux pas faire comme 'python script.py | tee log.txt 'pour l'ensemble du script Python car pour certaines raisons, les questions ne sont pas visibles à l'écran.
Voici un extrait du script qui appelle l'un des scripts shell.
cmd = "somescript.sh"
try:
retvalue = subprocess.check_call(cmd, shell=True)
except subprocess.CalledProcessError:
print ("script command has been failed")
sys.exit("exit from script")
Selon vous, que pourrait-on faire ici?
Modifier
Deux sous-questions basées sur la réponse d'Alex:
Comment faire les réponses sur les questions stockées dans le fichier de sortie ainsi? Par exemple sur la ligne
ok = raw_input(prompt)
l'utilisateur sera demandé pour la question et je voudrais la réponse enregistrée aussi bien.Je lis à propos de Popen et communique et n'a pas utilisé car il tamponne les données en mémoire. Ici, la quantité de sortie est grande et je dois aussi me soucier de l'erreur standard avec la sortie standard. Savez-vous si cela est possible avec Popen et communiquez avec la méthode?
Il y a quelque chose de délicieusement tordu dans votre classe tee(). J'ai clairement passé trop d'années à faire du C (et d'autres langues de dinosaures) avant de venir à la Lumière de Python. –
Salut Alex, merci pour la réponse. J'ai deux sous-questions basées sur votre réponse alors. 1. Comment répondre aux questions stockées dans le fichier de sortie? Par exemple sur la ligne ok = raw_input (prompt) on demandera à l'utilisateur la question et j'aimerais aussi que la réponse soit enregistrée. 2. Je lis à propos de Popen et communique et ne l'utilise pas puisqu'il tamponne les données en mémoire. Ici, la quantité de sortie est grande et je dois aussi me soucier de l'erreur standard avec la sortie standard. Savez-vous si cela est possible avec Popen et communiquez avec la méthode? – yart
@yart, bien sûr, vous pouvez faire tout ce que vous demandez (et il aurait été vraiment merveilleux si vous aviez mis vos spécifications détaillées dans votre question originale, au lieu de nous laisser deviner!), Laissez-moi éditer la réponse (pendant ce temps devrait éditer votre question plutôt que laisser ces détails absolument cruciaux accrocher dans un commentaire!). –