2016-05-10 7 views
2

Ich versuche Python-Programm von Ipython Notebook ausführen. Wenn unter Befehl ausgeführt wird, ist es funktioniert.run Python-Programm von ipython

run twitterstream.py >> output.txt 

Wenn jedoch laufen mit while-Schleife es ausfällt. Ich weiß nicht, warum es scheitert?

import time 
t_end = time.time() + 60 * 3 
while time.time() < t_end: 
    print ('entered') 
    run twitterstream.py >> output.txt 

Syntaxfehler:

File "<ipython-input-28-842e0185b3a8>", line 5 
    run twitterstream.py >> output.txt 
        ^
SyntaxError: invalid syntax 
+0

verweisen, was genau twitterstream.py tun? – Grr

+0

Es sammelt die Tweets vom Twitter. – samy

Antwort

1

Ihre while-Anweisung ist richtig strukturiert. Es wird zwar so oft wie möglich "eingegeben" gedruckt, bis 180 Sekunden verstrichen sind (das ist oft der Fall), und es wird auch versucht, Ihr Skript auf die gleiche Weise aufzurufen. Sie wären wahrscheinlich besser bedient, wenn Sie Ihr Skript nur einmal alle 1,5,10 oder eine beliebige Anzahl von Sekunden aufrufen, da es unnötig ist, es ständig aufzurufen.

Wie von Tadhg McDonald-Jensen mit% run ausgeführt, können Sie Ihr Skript aufrufen. Es gibt auch Grenzen für die Rate von Anrufen an Twitter, die Sie betrachten müssen here. Grundsätzlich 15 pro 15 Minuten oder 180 pro 15 Minuten, obwohl ich nicht sicher bin, was hier gilt.

Angenommen, Sie können im 15-Minuten-Worst-Case-Szenario 15 Anrufe in Ihrem 3-Minuten-Fenster ausführen. So könnte man so etwas wie:

from math import floor 

temp = floor(time.time()) 
    while time.time() < t_end: 
     if floor(time.time()) == temp + 12: 
      %run twitterstream.py >> output.txt 
     temp = floor(time.time()) 

Dieses Skript alle 12 Sekunden nennen würde.

+0

Das behandelt nicht die eigentliche Frage von "warum funktioniert diese Codezeile in Ipython-Notizbuch, aber erhöht einen SyntaxError in einem Skript" –

+0

@ TadhgMcDonald-Jensen ist mir bekannt. Leider brachte OP den Syntaxfehler erst nach der Veröffentlichung auf. – Grr

+0

Ist es nicht immer offensichtlich, dass 'run twitterstream.py >> output.txt' keine gültige Python-Syntax ist? –