读取文件并返回给浏览器 | 手把手教你入门Python之一百一十五-阿里云开发者社区

开发者社区> 温柔的养猫人> 正文

读取文件并返回给浏览器 | 手把手教你入门Python之一百一十五

简介: 本节介绍了文件的读取,并返回结果到浏览器。
+关注继续查看

上一篇:WSGI不同路径返回不同内容| 手把手教你入门Python之一百一十四
下一篇:方法的封装 | 手把手教你入门Python之一百一十六

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

读取文件并返回给浏览器

hello.html:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            margin:0 auto;
        }
        div {
            width:1000px;
        }
        .top {
            height:80px;
            background-color:red;
            margin-bottom:10px;
        }
        .middle {
            height:400px;
        }
        .left {
            width:100px;
            height:100%;
            background-color:yellow;
            float:left;
            margin-right:10px;
        }
        .content {
            width:780px;
            height:100%;
            background-color:pink;
            float:left;
            margin-right:10px;
        }
        .right {
            width:100px;
            height:100%;
            background-color:blue;
            float:left;
        }
        .bottom {
            height:80px;
            background-color:lime;
            margin-top:10px;
        }

    </style>
</head>
<body>
<div class="box">
    <div class="top"></div>
    <div class="middle">
        <div class="left"></div>
        <div class="content"></div>
        <div class="right"></div>
    </div>
    <div class="bottom"></div>
</div>

</body>
</html>

info.html:

{username},欢迎回来,你今年{age}岁了,你的性别是{gender}

读取文件:

import json
from wsgiref.simple_server import make_server


def demo_app(environ, start_response):
    path = environ['PATH_INFO']
    # print(environ.get('QUERY_STRING'))  # QUERY_STRING ==> 获取到客户端GET请求方式传递的参数
    # POST 请求数据的方式后面再说

    status_code = '200 OK'
    if path == '/':
        response = '欢迎来到我的首页'
    elif path == '/test':
        response = json.dumps({'name': 'zhangsan', 'age': 18})
    elif path == '/demo':
        with open('pages/xxxx.txt', 'r', encoding='utf8') as file:
            response = file.read()
    elif path == '/hello':
        with open('pages/hello.html', 'r', encoding='utf8') as file:
            response = file.read()
    elif path == '/info':
        # 查询数据库,获取到用户名
        name = 'jack'
        with open('pages/info.html', 'r', encoding='utf8') as file:
            # '{username}, 欢迎回来'.format(username=name)
            # flask  django  模板,渲染引擎
            response = file.read().format(username=name, age=18, gender='男')
    else:
        status_code = '404 Not Found'
        response = '页面走丢了'

    start_response(status_code, [('Content-Type', 'text/html;charset=utf8')])
    return [response.encode('utf8')]


if __name__ == '__main__':
    httpd = make_server('', 8080, demo_app)
    sa = httpd.socket.getsockname()
    print("Serving HTTP on", sa[0], "port", sa[1], "...")
    httpd.serve_forever()

返回JSON字符串:
image.png
返回文件内容:
image.png
返回hello.html:
image.png
返回info.html:
image.png

HTTP服务器优化

import json
from wsgiref.simple_server import make_server


def load_file(file_name, **kwargs):
    try:
        with open('pages/' + file_name, 'r', encoding='utf8') as file:
            content = file.read()
            if kwargs:  # kwargs = {'username':'zhangsan','age':19,'gender':'male'}
                content = content.format(**kwargs)
                # {username},欢迎回来,你今年{age}岁了,你的性别是{gender}.format(**kwargs)
            return content
    except FileNotFoundError:
        print('文件未找到')


def demo_app(environ, start_response):
    path = environ['PATH_INFO']

    status_code = '200 OK'
    if path == '/':
        response = '欢迎来到我的首页'
    elif path == '/test':
        response = json.dumps({'name': 'zhangsan', 'age': 18})
    elif path == '/demo':
        response = load_file('xxxx.txt')
    elif path == '/hello':
        response = load_file('hello.html')
    elif path == '/info':
        response = load_file('info.html', username='zhangsan', age=19, gender='male')
    else:
        status_code = '404 Not Found'
        response = '页面走丢了'

    start_response(status_code, [('Content-Type', 'text/html;charset=utf8')])
    return [response.encode('utf8')]


if __name__ == '__main__':
    httpd = make_server('', 8080, demo_app)
    sa = httpd.socket.getsockname()
    print("Serving HTTP on", sa[0], "port", sa[1], "...")
    httpd.serve_forever()

配套视频

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
spark大批量读取Hbase时出现java.lang.OutOfMemoryError: unable to create new native thread
spark大批量读取Hbase时出现java.lang.OutOfMemoryError: unable to create new native thread
2514 0
C++实践参考——二进制文件浏览器
【项目-二进制文件浏览器】 (1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图: 提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。 [参考解答] #include&lt;iostream&gt; #include&lt;iomanip&g
846 0
一起谈.NET技术,asp.net程序来读取多语言版本Ini配置文件
  这是asp.net程序来读取多语言版本Ini配置文件的开发示例,主要分为以下三个部分:   1、 Ini 配置文件   2、 读取Ini配置文件的DLL   3、 Web页面调用与内容显示   4、 数据库表T_User,如右图    首先说明一下Ini 文件格式:如下图其中[M_Index]...
822 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4140 0
SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集
SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集 前言:在学习完《SAS编程与商业案例》后,虽然能够接手公司的基本工作,但是为了更深入的SAS学习,也为了站在更高的一个层次上去掌握和优化公司工作,故而又咬紧牙关加紧学习《深入解析SAS》.就目前的两本书的对比,显而易见的是本书比《SAS编程…》要厚的多,再者内容更新是2015年著,最后是内容详实
1746 0
VBA生成或读取指定字符集的文本文件
用VBA做工具的过程中,遇见这样一个问题。使用FSO方式或者直接OPEN文件方式,生成的文本文件采用的字符集为当前操作系统默认字符集,不能选择字符集类型。这样的文件作为应用程序的配置文件或者作为js代码文件,常常会因为字符集不是UTF-8,不能直接使用,需要利用记事本进行一次人工的字符集转换。
738 0
1172
文章
2
问答
来源圈子
更多
Python学习资料大全,包含Python编程学习、实战案例分享、开发者必知词条等内容。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载