使用 'sys.stdout' 命令能否将 Python 输出重定向到网络上?

4

使用重定向命令是否可以将Python输出重定向到Web网页上? 我知道我们可以像这样重定向输出

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

或者

在终端中,像这样:

$ python foo.py > file

我听说像 Django 和 Flask 这样的 Web 框架可以解决这个问题。我想知道是否可以通过像 sys.stdout 这样的简单命令将输出重定向到 Web?


不行,因为标准输出中没有网址。 - Coder55
@Coder55 这个情况 通用视图 可以吗? https://docs.djangoproject.com/en/1.4/ref/generic-views/#django-views-generic-simple-redirect-to - NIMISHAN
将您的脚本设置为Web服务器中的CGI脚本/模块,并从浏览器中访问它。它会像您预期的那样正常工作。 - Murali Mopuru
请查看以下链接:https://docs.python.org/2/howto/webservers.html - Murali Mopuru
1个回答

0

如果你想快速访问 Python 脚本的输出结果,一种很酷的小技巧是将其重定向到 nc 并使用 -l(监听)选项,像这样:

python foo.py | nc -l 8080

然后您可以在Web浏览器中输入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

显然,这些都不是真正的生产级解决方案,你应该使用像Flask等合适的Web框架,但如果你只想快速测试一些东西,它们可以派上用场。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接