Python程序设计#2作业

Python程序设计#2作业 作业题目 数据文件(test,txt)是一个全球温度年度异常历史数据,基于Sanic实现一个查询服务,服务包括: 按起始和结束年份查询历史数据

本文包含相关资料包-----> 点击直达获取<-------

Python程序设计#2作业

作业题目

数据文件(test.txt)是一个全球温度年度异常历史数据。基于Sanic实现一个查询服务,服务包括:

  • 按起始和结束年份查询历史数据,查询结果支持多种格式:JSON、XML、CSV(用逗号作为间隔符)。
  • 按温度高低进行排序,支持升序和降序两种排序方式。

作业内容

程序源代码嵌入下方的code block中。

```python from sanic import Sanic from sanic import response from sanic.response import json import copy from xml.dom.minidom import Document

app = Sanic(" name ")

temper=[] tempi=[] tempd=[] name=["year","Land-Ocean Temperature Index","Year No_Smoothing Lowess"] def read_files(): fo=open("F:/zzz/AllCode/python/prj/test.txt","r") #以列表方式存储 for line in fo: a, b, c = [float(i) for i in line.split()] #print(a,b,c) temper.append([int(a),b,c]) fo.close()

def takeSecond(elem): return elem[1]

@app.route("/json/increase") async def post_json(request): tempi=copy.deepcopy(temper) tempi.sort(key=takeSecond) tempans=list() for words in tempi: tempans.append({'year':words[0],'temperature':words[1],'lowess':words[2]}) return json(tempans)

@app.route("/xml/increase") async def post_json(request): tempi=copy.deepcopy(temper) tempi.sort(key=takeSecond) # 创建doc doc = Document() # 创建根节点 root_node = doc.createElement("all_data")
doc.appendChild(root_node)
for list in tempi: data_node = doc.createElement("data") year_node = doc.createElement("year")
year_value = doc.createTextNode(str(list[0]))
year_node.appendChild(year_value)
data_node.appendChild(year_node)
year_node = doc.createElement("Temperature") year_value = doc.createTextNode(str(list[1])) year_node.appendChild(year_value)
data_node.appendChild(year_node)
year_node = doc.createElement("Lowess") year_value = doc.createTextNode(str(list[2])) year_node.appendChild(year_value)
data_node.appendChild(year_node)
root_node.appendChild(data_node)

with open('F:/zzz/AllCode/python/prj/note.xml', 'w') as f:
    f.write(doc.toprettyxml(indent='\t'))
return await response.file('F:/zzz/AllCode/python/prj/note.xml')

@app.route("/csv/increase") async def post_json(request): tempi=copy.deepcopy(temper) tempi.sort(key=takeSecond) with open("F:/zzz/AllCode/python/prj/test2.txt","w") as f: for list in tempi: s=str(list[0])+","+str(list[1])+","+str(list[2])+"\n" f.write(s) return await response.file('F:/zzz/AllCode/python/prj/test2.txt')

@app.route("/json/decrease") async def post_json(request): tempd=copy.deepcopy(temper) tempd.sort(key=takeSecond,reverse=True) tempans=list() for words in tempd: tempans.append({'year':words[0],'temperature':words[1],'lowess':words[2]}) return json(tempans)

@app.route("/xml/decrease") async def post_json(request): tempd=copy.deepcopy(temper) tempd.sort(key=takeSecond,reverse=True) # 创建doc doc = Document() # 创建根节点 root_node = doc.createElement("all_data")
doc.appendChild(root_node)
for list in tempd: data_node = doc.createElement("data") year_node = doc.createElement("year")
year_value = doc.createTextNode(str(list[0]))
year_node.appendChild(year_value)
data_node.appendChild(year_node)
year_node = doc.createElement("Temperature") year_value = doc.createTextNode(str(list[1])) year_node.appendChild(year_value)
data_node.appendChild(year_node)
year_node = doc.createElement("Lowess") year_value = doc.createTextNode(str(list[2])) year_node.appendChild(year_value)
data_node.appendChild(year_node)
root_node.appendChild(data_node)

with open('F:/zzz/AllCode/python/prj/note.xml', 'w') as f:
    f.write(doc.toprettyxml(indent='\t'))
return await response.file('F:/zzz/AllCode/python/prj/note.xml')

@app.route("/csv/decrease") async def post_json(request): tempd=copy.deepcopy(temper) tempd.sort(key=takeSecond,reverse=True) with open("F:/zzz/AllCode/python/prj/test2.txt","w") as f: for list in tempd: s=str(list[0])+","+str(list[1])+","+str(list[2])+"\n" f.write(s) return await response.file('F:/zzz/AllCode/python/prj/test2.txt')

@app.route('/json/start/ /end/ ') async def query_year(request,start,end): tempans=list() for words in temper[start-1880:end-1880+1]: tempans.append({'year':words[0],'temperature':words[1],'lowess':words[2]}) return json(tempans)

@app.route('/xml/start/ /end/ ') async def query_year(request,start,end): # 创建doc doc = Document() # 创建根节点 root_node = doc.createElement("all_data")
doc.appendChild(root_node)
for list in temper[start-1880:end-1880+1]: data_node = doc.createElement("data") year_node = doc.createElement("year")
year_value = doc.createTextNode(str(list[0]))
year_node.appendChild(year_value)
data_node.appendChild(year_node)
year_node = doc.createElement("Temperature") year_value = doc.createTextNode(str(list[1])) year_node.appendChild(year_value)
data_node.appendChild(year_node)
year_node = doc.createElement("Lowess") year_value = doc.createTextNode(str(list[2])) year_node.appendChild(year_value)
data_node.appendChild(year_node)
root_node.appendChild(data_node)

with open('F:/zzz/AllCode/python/prj/note.xml', 'w') as f:
    f.write(doc.toprettyxml(indent='\t'))
return await response.file('F:/zzz/AllCode/python/prj/note.xml')

@app.route('/csv/start/ /end/ ') async def query_year(request,start,end): with open("F:/zzz/AllCode/python/prj/test2.txt","w") as f: for list in temper[start-1880:end-1880+1]: s=str(list[0])+","+str(list[1])+","+str(list[2])+"\n" f.write(s) return await response.file('F:/zzz/AllCode/python/prj/test2.txt')

if name ==" main ": read_files() app.run(host="0.0.0.0",port=8000)

```

代码说明

访问http://0.0.0.0/8000端口进行访问,访问结果与网址匹配关系对应如下

网址 功能
http://0.0.0.0/8000/json/increase 以json格式返回递增数据
http://0.0.0.0/8000/xml/increase 以xml格式返回递增数据
http://0.0.0.0/8000/csv/increase 以csv格式返回递增数据
http://0.0.0.0/8000/json/decrease 以json格式返回递减数据
http://0.0.0.0/8000/xml/decrease 以xml格式返回递减数据
http://0.0.0.0/8000/csv/decrease 以csv格式返回递减数据
http://0.0.0.0/8000/json/start/ /end/ 以json格式返回从start_year到end_year的数据
http://0.0.0.0/8000/xml/start/ /end/ 以xml格式返回从start_year到end_year的数据
http://0.0.0.0/8000/csv/start/ /end/ 以csv格式返回从start_year到end_year的数据

在刚开始时先通过读文件,将数据以列表的方式进行存储。json返回格式直接以sanic自带json格式返回,xml格式与csv格式通过存到文件之中,再通过文件来返回。xml的格式用了Document库函数,通过此来创建结点。

参考文献

  • “分布/并行式计算”教学资源网站设计与实现(燕山大学·赵赓)
  • 基于J2EE物流控制管理系统设计与实现(电子科技大学·徐悦晋)
  • DB2 tools自动化测试系统的设计与实现(北京邮电大学·石存玉)
  • 基于J2EE平台的物业管理系统的设计(贵州大学·刘怡伶)
  • 基于J2EE平台的物业管理系统的设计(贵州大学·刘怡伶)
  • 基于信息化服务的湖南电大课程教学系统的设计与实现(电子科技大学·龙昱)
  • 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
  • 基于信息化服务的湖南电大课程教学系统的设计与实现(电子科技大学·龙昱)
  • 丰昌公司电子商务系统的设计与实现(大连理工大学·陈贺)
  • 基于J2EE的手机综合网站的设计与实现(吉林大学·宋微)
  • 基于J2EE的远程教育平台设计与实现(西北大学·陈怡)
  • 基于J2EE的高校课堂教学管理系统设计与分析(电子科技大学·张霖婧)
  • 基于J2EE的物流信息管理系统的设计与实现(北京邮电大学·杨帆)
  • DB2 tools自动化测试系统的设计与实现(北京邮电大学·石存玉)
  • 基于J2EE的手机综合网站的设计与实现(吉林大学·宋微)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码工坊 ,原文地址:https://m.bishedaima.com/yuanma/36023.html

相关推荐

  • ssm架构

    dfhxtxtxr 更富有创意天大鱼大肉的v不管成功发行股份幸福感新股发行发光效果如下如果想让共享富贵下功夫的人地广人稀官方唱歌唱歌唱歌的一天的火锅吃瓜吃瓜他的烟台大樱桃一天到黑哥唱歌唱歌的泰国第一天衬托出同样的态度一天的太阳媳妇关心他人 参考文献 基于SSM框架的B2C电商平台的设计与实现(华东交通大学·卢庆胜) 基于SSVH框架的综合集中告警WEB系统的研究与实现(西南交通大学·蔚晓娟) 基于Struts和Hibernate的J2EE Web应用的研究与实现(华东师范大学·张国梁) 基于SSM框架的投资项目经济评价系统分析与实现(山东大学·白春强) 基于SSM的综合医养平台的设计与实现(吉林大学·宋恩旭) 基于轻量级J2EE架构的工程管理信息系统的设计与实现(暨南大学·谢运佳) 基于SSM的综合医养平台的设计与实现(吉林大学·宋恩旭) 基于B/S结构的汽车营销服务管理系统的研究与实现(武汉科技大学·王恒青) 基于SSM框架的资产证券化系统的设计与实现(西安电子科技大学·贾田田) 基于SSI框架的开发配置管理系统的设计与实现(山东大学·冯峰) 基于J2EE/UML的企业建模系统的研究(浙江大学·丁勇) 基于OAuth2
    2024年05月14日
    9 1 2
  • 基于JSP和MySql的在线电子书商城

    基于JSP和MySql的在线电子书商城 1 引言 电子商务是指整个商务活动和贸易活动的电子化,它通过先进的信息网络,将事物活动和贸易活动中发生关系的各方有机地联系起来
    2024年05月14日
    9 1 1
  • Python 网络爬虫

    Python 网络爬虫 实验目的及实验内容 实验目的: 使用 requests-BeautifulSoup-re 技术路线,编写程序爬取网页
    2024年05月14日
    2 1 1
  • 基于ssm框架的在线医院挂号系统

    HospitalSystem 参考文献 医疗挂号系统服务端的设计与实现(北京邮电大学·郑朝杰) 基于MVC模式的医院预约挂号管理系统的设计与实现(广西大学·戴铭孚) 基于SSM的综合医养平台的设计与实现(吉林大学·宋恩旭) 网上预约挂号系统的设计与实现(华中科技大学·游国强) 基于Android平台的预约挂号系统的设计与实现(江西财经大学·赵震) 在线医疗管理系统的研究与实现(辽宁科技大学·薄翔) 基于J2EE架构的医疗信息服务平台的设计与实现(北京交通大学·张颖彬) 医疗挂号系统运营支撑平台的设计与实现(北京邮电大学·孟祥建) 基于Android平台的预约挂号系统的设计与实现(江西财经大学·赵震) 基于J2EE架构的医疗信息服务平台的设计与实现(北京交通大学·张颖彬) 基于
    2024年05月14日
    9 1 3
  • 数据库原理大作业-web博客

    数据库原理大作业-web博客 开发环境 Windows 10 Ubuntu 16,04 server x64 管理员账号 :admin 密码 :adminpassword 游客账号 :guest 密码123456
    2024年05月14日
    4 1 2
  • 虚拟资源管理微服务设计实现源码与论文(免费下载)

    这是一个🔥🔥虚拟资源管理微服务设计实现源码与论文(免费下载)🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 虚拟资源管理微服务设计开发技术栈为SSM项目
    2024年05月23日
    5 1 1
  • 奇异值分解

    奇异值分解(SVD)及其扩展详解 本文算法主要考虑个性化推荐领域 1,Matrix Factorization Model 和 Baseline Predictors SVD 其实就是 Matrix Factorization Model 和 Baseline Predictor 的结合
    2024年05月14日
    4 1 1
  • 基于Python实现爬虫Demo

    大话爬虫的基本套路 什么是爬虫? 网络爬虫 也叫 网络蜘蛛 ,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛
    2024年05月14日
    7 1 2
  • 基于python实现的小区停车数据分析

    某小区停车数据分析 核心内容:处理大量excel表格数据,数据可视化 一,问题描述 现有2018年9月的某小区停车数据,如下图, 30共30天的excel表格
    2024年05月14日
    4 1 3
  • 中小型医院网站

    这是一个🔥🔥基于SpringBoot框架的中小型医院网站设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    6 1 1

发表回复

登录后才能评论