Contrôle de fonctionnement
Raspberry Pi2 (raspbian)
MacOS X 10.8.5
Préparez le code suivant
hello.py
#!/usr/bin/env python
import time
print "hello"
for x in range(0,60):
print x
time.sleep(1)
Exécutez comme suit
$ ./hello.py > log.tmp
Effectuez les opérations suivantes dans un autre terminal
$ tail -f log.tmp
En faisant ce qui précède, il semble que le contenu de log.tmp soit mis à jour après 60 impressions </ font>.
Lorsqu'il est visualisé avec stdout, il est affiché toutes les secondes, mais dans le cas de la sortie de fichier, il n'est pas sorti toutes les secondes.
Préparez plutôt un script bash
test-exec
#!/usr/bin/env bash
for x in $(seq 1 60)
do
echo $x
sleep 1
done
Si vous exécutez cela, le fichier sera sorti toutes les secondes.
Comment obtenir une instruction d'impression python pour imprimer un fichier toutes les secondes?
Il peut être possible d'utiliser une commande d'écriture de fichier autre que print, mais je dois savoir comment la combiner avec la redirection de fichier.
Il est regrettable que même si la température et l'humidité peuvent être mesurées avec DHT11, cela ne peut pas être vu avec tail -f lors de la sortie du fichier.
http://stackoverflow.com/questions/107705/disable-output-buffering
Il semble que vous puissiez spécifier l'option -u lors de l'exécution de python.
hello.py
#!/usr/bin/env python -u
import time
print "hello"
for x in range(0,60):
print x
time.sleep(1)
La spécification ci-dessus #! / Usr / bin / env python -u
fonctionnait sur MacOSX.
D'un autre côté, dans raspberry Pi2, j'ai eu une erreur du type -u option is missing
.
Cela a fonctionné lorsque j'ai défini #! / Usr / bin / python -u
.