2016-05-10 58 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语法,这不是很明显吗? –