2016-05-10 59 views
2

我想從ipython筆記本運行python程序。如果運行下面的命令,它的作品是從ipython運行python程序

run twitterstream.py >> output.txt 

然而,如果用while循環失敗運行。我不知道它爲什麼會失敗?

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

語法錯誤:

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

究竟是什麼twitterstream.py在做什麼? – Grr

+0

它收集來自twitter的推文。 – samy

回答

1

你while語句結構合理。雖然它會盡可能多次打印「輸入」,直到經過180秒(這是很多次),並且它也會嘗試以相同的方式調用腳本。你可能會更好地服務,只需每1,5,10次調用一次你的腳本,或者任何秒數,因爲它不需要經常調用它。

正如Tadhg McDonald-Jensen使用%run所指出的,您將能夠調用您的腳本。另外,您必須考慮查看here,才能調用Twitter的速率有限制。基本上15每15分鐘或每15分鐘180,但我不知道這適用於此。

假設每15分鐘15個最壞的情況,您可以在三分鐘窗口內運行15個呼叫。所以你可以這樣做:

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()) 

這會每12秒調用一次你的腳本。

+0

這沒有解決「爲什麼這行代碼在ipython筆記本中工作,但在腳本中引發SyntaxError」的實際問題「 –

+0

@ TadhgMcDonald-Jensen我知道。不幸的是,在我發佈之前,OP沒有提出語法錯誤。 – Grr

+0

運行twitterstream.py >> output.txt是不是有效的Python語法,這不是很明顯嗎? –