day05_数据可视化和程序日志
准备web服务器
from fastapi import FastAPI
from fastapi import Response
import uvicorn
app = FastAPI()
@app.get('/')
def func():
with open('source/html/index.html', 'rb') as f:
data = f.read()
res = Response(data)
return res
@app.get('/{html_name}')
def func(html_name: str):
with open(f'source/html/{html_name}', 'rb') as f:
data = f.read()
res = Response(data)
return res
@app.get('/images/{img_name}')
def func(img_name: str):
with open(f'source/images/{img_name}', 'rb') as f:
data = f.read()
res = Response(data)
return res
@app.get('/video/{vi_name}')
def func(vi_name: str):
with open(f'source/video/{vi_name}', 'rb') as f:
data = f.read()
res = Response(data)
return res
uvicorn.run(app,host='127.0.0.1',port=9091)
数据可视化
1.爬取数据
import requests
import re
url = 'http://127.0.0.1:9091/gdp.html'
response = requests.get(url)
html_str = response.content.decode()
gdp_data = re.findall('<a href=""><font>(.+?)</font>.*?¥(.+?)亿元', html_str, re.S)
print(gdp_data)
with open('gdp.txt', 'w', encoding='utf8') as f:
f.write(str(gdp_data))
2.读取数据
with open('gdp.txt', 'r', encoding='utf8') as f:
data = f.read()
gdp_list = eval(data)
print(gdp_list)
print(type(gdp_list))
3.pyecharts制作饼图
echarts: 百度开源的一个数据可视化工具
pyecharts: python版本的echarts工具
使用pyecharts步骤
1.安装: pip install pyecharts
2.导包: import pyecharts
3.使用: 可以制作饼图,折线图,地图等可视化页面
def get_gdp_list():
with open('gdp.txt', 'r', encoding='utf8') as f:
data = f.read()
gdp_list = eval(data)
return gdp_list
from pyecharts.charts import Pie
import pyecharts.options as opts
pie = Pie(init_opts=opts.InitOpts(width='1500px', height='800px'))
gdp_list = get_gdp_list()
pie.add('gdp数据',
gdp_list[:10],
label_opts=opts.LabelOpts(formatter='{b}:{d}%')
)
pie.set_global_opts(title_opts=opts.TitleOpts(title='2023_GDP数据',subtitle='斌子制作'))
pie.render('source/html/my_render.html')
程序日志
知识点:
python中日志模块: logging
日志作用:
1.查看程序的运行情况
2.方便开发人员查看bug
3.方便分析用户的行为和喜好
日志等级:
DEBUG :(数字10代表)调试信息
INFO: (数字20代表)正常运行信息
WARNING: (数字30代表)警告信息(默认)
ERROR: (数字40代表)错误信息
CRITICAL: (数字50代表)危险信息
日志优先级: DEBUG < INFO < WARNING < ERROR < CRITICAL
入门
import logging
logging.debug('这是一个调试信息...')
logging.info('这是一个正常运行信息...')
logging.warning('这是一个警告信息...')
logging.error('这是一个错误信息...')
logging.critical('这是一个危险信息...')
格式化输出到控制台
import logging
logging.basicConfig(
level=logging.DEBUG,
format='时间:%(asctime)s,程序名:%(filename)s,行号:%(lineno)d,%(levelname)s信息:%(message)s'
)
logging.debug('这是一个调试信息...')
logging.info('这是一个正常运行信息...')
logging.warning('这是一个警告信息...')
logging.error('这是一个错误信息...')
logging.critical('这是一个危险信息...')
格式化输出到文件
import logging
logging.basicConfig(
level=logging.DEBUG,
format='时间:%(asctime)s,程序名:%(filename)s,行号:%(lineno)d,%(levelname)s信息:%(message)s',
filename='my_log.txt',
filemode='w'
)
logging.debug('这是一个调试信息...')
logging.info('这是一个正常运行信息...')
logging.warning('这是一个警告信息...')
logging.error('这是一个错误信息...')
logging.critical('这是一个危险信息...')
日志版本web服务器
from fastapi import FastAPI
from fastapi import Response
import uvicorn
import logging
app = FastAPI()
logging.basicConfig(
level=logging.DEBUG,
format='时间:%(asctime)s,程序名:%(filename)s,行号:%(lineno)d,%(levelname)s信息:%(message)s',
filename='web_log.txt',
filemode='w'
)
@app.get('/')
def func():
logging.info('用户访问了首页')
with open('source/html/index.html', 'rb') as f:
data = f.read()
res = Response(data)
return res
@app.get('/{html_name}')
def func(html_name: str):
logging.info(f'用户访问了{html_name}资源')
with open(f'source/html/{html_name}', 'rb') as f:
data = f.read()
res = Response(data)
return res
@app.get('/images/{img_name}')
def func(img_name: str):
logging.info(f'用户访问了{img_name}图片文件')
with open(f'source/images/{img_name}', 'rb') as f:
data = f.read()
res = Response(data)
return res
@app.get('/video/{vi_name}')
def func(vi_name: str):
logging.info(f'用户访问了{vi_name}视频文件')
with open(f'source/video/{vi_name}', 'rb') as f:
data = f.read()
res = Response(data)
return res
uvicorn.run(app, host='127.0.0.1', port=9099)