【问题标题】:run python program from ipython从 ipython 运行 python 程序
【发布时间】:2016-05-11 00:39:58
【问题描述】:

我正在尝试从 ipython notebook 运行 python 程序。如果在命令下面运行它是 works.

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

【问题讨论】:

  • twitterstream.py 到底在做什么?
  • 它从 twitter 收集推文。

标签: python ipython


【解决方案1】:

您的 while 语句结构正确。尽管它会尽可能多地打印“输入”,直到 180 秒过去(这是很多次),它也会尝试以相同的方式调用您的脚本。每隔 1、5、10 或任何秒数调用一次脚本可能会更好,因为没有必要经常调用它。

正如 Tadhg McDonald-Jensen 使用 %run 所指出的,您将能够调用您的脚本。此外,您必须考虑对 twitter 的调用率有限制,请参阅here。基本上每 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 秒调用一次您的脚本。

【讨论】:

  • 这并没有解决“为什么这行代码在 ipython notebook 中有效但在脚本中引发 SyntaxError”的实际问题
  • @TadhgMcDonald-Jensen 我知道。不幸的是,直到我发布之后,OP 才提出语法错误。
  • run twitterstream.py &gt;&gt; output.txt 不是有效的python语法不是很明显吗?
  • 给人的印象是他在使用 Ipython,(我没有广泛使用)所以没有立即使用。
  • @TadhgMcDonald-Jensen 明确回答不适用
【解决方案2】:

the run "magic command" 不是有效的 Python 代码或语法。

如果你想使用代码中的魔法命令,你需要参考How to run an IPython magic from a script (or timing a Python script)

【讨论】:

  • 非常感谢。在 "run" 前面添加 "%" 符号,它起作用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 2012-07-29
相关资源
最近更新 更多