可以将stdout直接传送到Web浏览器吗?

时间:2016-10-25 23:00:56

标签: macos shell web browser

我有一些生成HTML输出的python实用程序。我希望能够将输出重定向到浏览器以进行预览,而不是保存到临时文件,并在Web浏览器中打开它。例如,像:

myscript.py | open /Applications/Safari.app

有没有办法做这样的事情?我在OS X上。

2 个答案:

答案 0 :(得分:1)

关于我能想到的最好的方法是将HTML编码为data:网址并打开浏览器:

import webbrowser, base64

html = "<b>hello world</b>"
b64url = "data:text/html;base64," + base64.b64encode(html)
webbrowser.get("safari").open(b64url)

但是,对于除Safari之外的任何浏览器,这似乎都不可靠。我不确定它对大页面的效果如何; URL最终可能会变得太大而无法处理。

答案 1 :(得分:0)

macOS中的

open实用程序功能非常强大,请检查man open。虽然-f参数说明提到了默认文本编辑器,但它实际上适用于所有应用程序。所以对于你的情况,这应该有效:

myscript.py | open -f -a safari

不幸的是open只是将您的输入保存到临时.txt文件中,浏览器将其视为纯文本,因此您无法以这种方式呈现HTML。