2017-08-22 1 views
1

Je le code suivant dans bash scriptRedirect sortie python fichier

python -u - << EOF 
from my.package import script 
script.run() 
EOF 
>> /path/to/log/file 

En script.py il y a un certain nombre de print statements et je voudrais rediriger cette sortie de la console vers un fichier. Le fichier est créé avec succès, mais il est vide.

Comment puis-je faire à ce sujet? Qu'est-ce que j'oublie ici?

+0

Êtes-vous capable de mettre à jour le fichier python actuel? – AK47

+0

Est-ce que [ma réponse] (https://stackoverflow.com/a/45817397/5291015) a fonctionné? Si oui, lisez [Que dois-je faire lorsque quelqu'un répond à ma question?] (Https://stackoverflow.com/help/someone-answers) et [acceptez la réponse] (https://stackoverflow.com/help/accepted -answer) si cela a résolu votre problème. – Inian

Répondre

2

L'idée est bonne, mais la façon dont vous rediriger la sortie vers un fichier à partir d'ici-document est faux, Heredoc se réoriente comme toutes les autres commandes, il suffit de faire

python -u - <<EOF>> /path/to/log/file 
from my.package import script 
script.run() 
EOF 
0

try this ,

import sys 
f = open("log_file.txt", 'w') 
sys.stdout = f 
print "My print statements" 
f.close() 
+0

Alors que cet extrait de code peut résoudre la question, y compris une [explication] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) contribue vraiment à améliorer la qualité de votre message. Rappelez-vous que vous répondez à la question pour les lecteurs dans le futur, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. – Parfait

0

syntaxe droite est:

python -u - >> /path/to/log/file << EOF 
from my.package import script 
script.run() 
EOF 

La raison est que si vous écrivez en bash quelque chose comme que:

util_1 | util_2 | util_3 >> some_file < another_file 

ou

util_1 | util_2 | util_3 >> some_file << EOF 
... 
EOF 

another_file ou ici-documents va à l'entrée standard du premier utilitaire dans la canalisation (dans ce cas util_1).