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

相关推荐

  • 基于JAVA WEB和MYSQL数据库实现的大学图书馆管理系统APP

    基于JAVA WEB和MYSQL数据库实现的大学图书馆管理系统APP 一,系统开发目的 几年前的web2,0时代给我们带来的冲击还在扩大,紧接着的 iPhone 和 Android 平板电脑的日益流行
    2024年05月14日
    2 1 1
  • 基于SpringBoot框架的医疗报销系统

    这是一套采用Java编程语言,基于SpringBoot框架构建的医疗报销管理系统源代码,项目中融入了Vue技术,开发工具为Idea或Eclipse,此系统适用于毕业设计或课程实践
    2024年05月23日
    3 1 1
  • 二维非稳态热传导 膏体发动机之Python

    二维非稳态热传导 膏体发动机 一,划分网格: X 方向网格:20;Y 方向网格:20 材料 1:材料 2:材料 1=8:4:8 总网格数量:400 网格尺寸: 注意有界性条件:方程的各项系数大于 0 显式格式: 网格时 网格时 隐式格式: 有界性条件自动满足 C-N 格式: 二
    2024年05月14日
    1 1 1
  • Java+SSM实现复杂权限控制的教务管理,教务评教系统

    这是一个🔥🔥SSM实现复杂权限控制的教务管理,教务评教系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 教务管理系统开发技术栈为SSM项目,可以作为毕业设计课程设计作业为大学教务处实现一个带有权限控制的教务管理系统
    2024年05月23日
    10 1 2
  • 论坛网站

    这是一个🔥🔥基于SpringBoot框架的论坛网站设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    3 1 1
  • 基于Java+SSM的毕业设计管理系统、基于JavaWeb的毕业设计管理系统

    这是一个🔥🔥基于SSM的毕业设计管理系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 毕业设计管理系统开发技术栈为SSM项目,可以作为毕业设计课程设计作业基于Java+SSM框架(Spring
    2024年05月23日
    4 1 2
  • 基于Python实现的通用小规模搜索引擎

    基于Python实现的通用小规模搜索引擎 1,项目简介 1,1背景 《信息内容安全》网络信息内容获取技术课程项目设计 - 一个至少能支持10个以上网站的爬虫程序
    2024年05月14日
    2 1 1
  • 基于javaweb实现的网上订餐系统

    一,项目简介 随着信息化技术在生活中的应用越来越广泛, 网上订餐也逐渐成为人们的一种生活方式这类订餐软件在市面上也很多,本系统正是基于这样一种环境下应运而生
    2024年05月14日
    3 1 1
  • 动漫人物分类识别之Python

    动漫人物分类识别 Python & Deep Learning 101 Assignment #2 来源 一开始定题的时候大家都很纠结,想了几天都没有很好的想法
    2024年05月14日
    1 1 1
  • python数据分析

    python数据分析(10)——挖掘建模(5)离群点检测 1, 离群点的类型 2, 检测方法 3, 代码 ```python - - coding: utf-8 - - 使用K-Means算法聚类消费行为特征数据 import numpy as np import pandas as pd 参数初始化 inputfile = 'consumption_data
    2024年05月14日
    1 1 1

发表回复

登录后才能评论