是否可以使用重定向命令将python输出重定向到web? 我知道我们可以像这样重定向输出
import sys
sys.stdout = open('file', 'w')
print 'test'
或
在这样的终端
$ python foo.py > file
我听说像'Django' and 'Flask'
这样的网络框架可以解决问题。我想知道通过使用像sys.stdout
之类的简单命令是否可以将输出重定向到web?
答案 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等),但是如果您只是想快速测试一下,它们可以解决问题。