是否可以使用'sys.stdout'命令将python输出重定向到web?

时间:2016-01-02 10:10:36

标签: python django redirect web

是否可以使用重定向命令将python输出重定向到web? 我知道我们可以像这样重定向输出

import sys
sys.stdout = open('file', 'w')
print 'test'

在这样的终端

$ python foo.py > file

我听说像'Django' and 'Flask'这样的网络框架可以解决问题。我想知道通过使用像sys.stdout之类的简单命令是否可以将输出重定向到web?

1 个答案:

答案 0 :(得分:0)

您可以做一个很酷的技巧,作为从网上快速访问python脚本输出的快捷方式,使用nc(侦听)选项将其重定向到-l,像这样:

python foo.py | nc -l 8080

然后,您可以在网络浏览器中转到localhost:8080以查看输出。它实际上不是Web服务器-只能运行一次!一旦有人加载了页面,它将停止提供请求。

作为此方法的一种更高级的变体,它允许多次访问该页面,将其包装成一个循环,如下所示:

while true; do python foo.py | nc -l 8080; done

但是,每次您刷新页面时,它将重新运行脚本!作为复杂性的最后一层,您可以缓存结果,因此不必每次都重新计算它:

python foo.py > /tmp/myoutput; while true; do nc -l 8080 < /tmp/myoutput; done

显然,这些都不是真正的生产质量解决方案,您应该使用合适的Web框架(例如Flask等),但是如果您只是想快速测试一下,它们可以解决问题。