2017-08-22 4 views
0

J'ai un problème avec la sortie de mon script python qui effectue l'exécution automatique après le démarrage de raspberry pi et écrit sa sortie dans le fichier output.txt que j'ai créé en utilisant crontab. Mon code est quelque chose comme ceci:Sortie du script python qui s'exécute après le démarrage de raspberry pi

while True: 
f=open('test.txt','w+') 
d_date = datetime.datetime.now() 
reg_format_date = d_date.strftime("%Y/%m/%d %H:%M:%S") 
print(reg_format_date) 
f.write(reg_format_date)   
for x in range (27,14,-1): 
    key_in=GPIO.input(x) 
    if key_in==0: 
     y='1' 
     print(y) 
     f.write(y)    

    else: 
     y='0' 
     print(y) 
     f.write(y) 
    f.close() 

En crontab j'ai écrire comme ça

@reboot python /home/pi/test.py >> /home/pi/output.txt& 

sortie de mon script est:

2017/08/13 01:49:12 
0 
1 
1 
1 
1 
0 
0 
0 
0 
0 
0 
0 
0 

format de sortie que je veux: 2017/08/12 01:33:28 0111100000000

Répondre

0

De l'aide (print):

Aide sur l'impression de fonction intégrée dans le module builtins:

print(...) 
    print(value, ..., sep=' ', end='\n', file=sys.stdout) 

    Prints the values to a stream, or to sys.stdout by default. 
    Optional keyword arguments: 
    file: a file-like object (stream); defaults to the current sys.stdout. 
    sep: string inserted between values, default a space. 
    end: string appended after the last value, default a newline. 

Ainsi, afin d'imprimer sur la même ligne votre code sera modifié de telle sorte que vous placez une virgule après la première impression de manière à ne ne va pas à la nouvelle ligne et ressemblerait à:

while True: 
f=open('test.txt','w+') 
d_date = datetime.datetime.now() 
reg_format_date = d_date.strftime("%Y/%m/%d %H:%M:%S") 
print(reg_format_date), 
f.write(reg_format_date)   
for x in range (27,14,-1): 
    key_in=GPIO.input(x) 
    if key_in==0: 
     y='1' 
     print(y,end='') 
     f.write(y)    

    else: 
     y='0' 
     print(y,end='') 
     f.write(y) 
    f.close() 
+0

est ok avec la fonction d'impression, mais quand il écrit dans un fichier, il va à la nouvelle ligne. alors comment écrire dans une même ligne dans un fichier – user70905

+0

Pour cela, s'il vous plaît se référer à la poste: https: //stackoverflow.com/questions/17290829/continue-writing-in-same-line-of-file –

+0

lorsque je lance le code manuellement par F5 sa sortie sera 2017/08/22 11:46:08 1111111111111 mais si elle est exécutée automatiquement en utilisant crontab iwhen écrire dans un fichier, il va à newline – user70905