将收到的HTML作为字符串写入浏览器

时间:2018-02-05 22:09:00

标签: python html

我有一个基本的HTML文件,如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome!</h1>
</body>
</html>

我在python中接收文件并将其存储为字符串。我想知道,有没有办法将其写入网络浏览器?

该文件在我的计算机上,所以我的目标不是将其保存为html文件然后执行它,而是从python中执行此操作到浏览器。

我知道使用JavaScript我可以使用Document.write()将内容注入网页,但这已经在浏览器中完成了。我想实现类似的目标。

2 个答案:

答案 0 :(得分:2)

您可以使用flask这个简单的Python Web框架来提供字符串:

使用flaskpip install flask):

import flask
app = flask.Flask(__name__)
s = """
<!DOCTYPE html>
 <html>
  <head>
    <title>Home</title>
  </head>
  <body>
    <h1>Welcome!</h1>
  </body>
 </html>
"""
@app.route('/')
def home():
  return s

if __name__ == '__main__':
    app.debug = True
app.run()

现在,您可以导航到127:0.0.1:5000或运行应用时指定的等效IP和端口。

答案 1 :(得分:1)

您可以执行以下操作:

def gradient(im):
    # Sobel operator
    op1 = np.array([[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]])
    op2 = np.array([[-1, -2, -1],[ 0,  0,  0],[ 1,  2,  1]])
    kernel1 = np.zeros(im.shape)
    kernel1[:op1.shape[0], :op1.shape[1]] = op1
    kernel1 = np.fft.fft2(kernel1)

    kernel2 = np.zeros(im.shape)
    kernel2[:op2.shape[0], :op2.shape[1]] = op2
    kernel2 = np.fft.fft2(kernel2)

    fim = np.fft.fft2(im)
    Gx = np.real(np.fft.ifft2(kernel1 * fim)).astype(float)
    Gy = np.real(np.fft.ifft2(kernel2 * fim)).astype(float)

    G = np.sqrt(Gx**2 + Gy**2)
    Theta = np.arctan(Gy, Gx) * 180 / np.pi
    return G, Theta    

def nonMaximumSuppression(image):
    det, phase = self.gradient(image)
    gmax = np.zeros(det.shape)
    for i in range(gmax.shape[0]):
        for j in range(gmax.shape[1]):
            if phase[i][j] < 0:
                phase[i][j] += 360

            if ((j+1) < gmax.shape[1]) and ((j-1) >= 0) and ((i+1) < gmax.shape[0]) and ((i-1) >= 0):
            # 0 degrees
                if (phase[i][j] >= 337.5 or phase[i][j] < 22.5) or (phase[i][j] >= 157.5 and phase[i][j] < 202.5):
                    if det[i][j] >= det[i][j + 1] and det[i][j] >= det[i][j - 1]:
                        gmax[i][j] = det[i][j]
            # 45 degrees
                if (phase[i][j] >= 22.5 and phase[i][j] < 67.5) or (phase[i][j] >= 202.5 and phase[i][j] < 247.5):
                    if det[i][j] >= det[i - 1][j + 1] and det[i][j] >= det[i + 1][j - 1]:
                        gmax[i][j] = det[i][j]
            # 90 degrees
                if (phase[i][j] >= 67.5 and phase[i][j] < 112.5) or (phase[i][j] >= 247.5 and phase[i][j] < 292.5):
                    if det[i][j] >= det[i - 1][j] and det[i][j] >= det[i + 1][j]:
                        gmax[i][j] = det[i][j]
            # 135 degrees
                if (phase[i][j] >= 112.5 and phase[i][j] < 157.5) or (phase[i][j] >= 292.5 and phase[i][j] < 337.5):
                    if det[i][j] >= det[i - 1][j - 1] and det[i][j] >= det[i + 1][j + 1]:
                        gmax[i][j] = det[i][j]
    return gmax