【Python31--pickle函数】
一、含义
1、pickle的实质是什么
答:利用一些算法把数据对象转换成“二进制文件”,存储在硬盘上,当然也可以放在数据库或者是另外一台计算机上
2、存放:picking,读取:unpicking
3、把my_list 的数据放到pickle_file文件内
>>> import pickle
>>> my_list = [123,3.14,'尘封',['another list']]
>>> pickle_file = open('my_list.pkl','wb')
>>> pickle.dump(my_list,pickle_file) #dump():把my_list的数据放到pickle_file文件内
>>> pickle_file.close()
#把写入硬盘的数据在读取出来(用到load函数)
>>> pickle_file = open('my_list.pkl','rb')
>>> my_list2 = pickle.load(pickle_file)
>>> print(my_list2)
[123, 3.14, '尘封', ['another list']]
>>>
4、天气查询接口
用中国天气网的接口:http://m.weather.com.cn/data/城市代码.html,然后就是用key找value,在打印出来
接口:http://wthrcdn.etouch.cn/weather_mini?city=北京
返回的结果:
{"desc":"OK","status":1000,"data":{"wendu":"","ganmao":"风较大,较易发生感冒,注意防护。","forecast":[{"fengxiang":"北风","fengli":"5-6级","high":"高温 24℃","type":"晴","low":"低温 11℃","date":"3日星期六"},{"fengxiang":"北风","fengli":"4-5级","high":"高温 19℃","type":"晴","low":"低温 8℃","date":"4日星期日"},{"fengxiang":"无持续风向","fengli":"微风","high":"高温 21℃","type":"晴","low":"低温 9℃","date":"5日星期一"},{"fengxiang":"无持续风向","fengli":"微风","high":"高温 21℃","type":"多云","low":"低温 10℃","date":"6日星期二"},{"fengxiang":"无持续风向","fengli":"微风","high":"高温 24℃","type":"晴","low":"低温 12℃","date":"7日星期三"},{"fengxiang":"无持续风向","fengli":"微风","high":"高温 23℃","type":"晴","low":"低温 11℃","date":"8日星期四"}],"yesterday":{"fl":"微风","fx":"无持续风向","high":"高温 23℃","type":"晴","low":"低温 12℃","date":"2日星期五"},"aqi":"","city":"北京"}}
***********************************************
代码编写依据返回的结果来确定参数
import urllib.request
import gzip
import json print('-----------天气查询---------------')
def get_weather_data():
city_name = input('请输入城市名称:')
#url_name:输入城市名(其中urllib.parse.quote是将城市名转换为url的组件),url_cityKey:输入城市代码
url_name = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name)
#url_cityKey = 'http://wthrcdn.etouch.cn/weather_mini?citykey=101010100' #读取网页数据,
weather_data = urllib.request.urlopen(url_name).read()
#解压网页数据:
weather_data = gzip.decompress(weather_data).decode('utf-8')
#将json数据转换为dict数据
weather_dict= json.loads(weather_data) return weather_dict #定义当前天气输出格式
def show_weather(weather_data):
weather_dict = weather_data
if weather_dict.get('desc') == 'invilad-citykey':
print('你输入的城市有误或者天气中心未收录你所在城市')
elif weather_dict.get('desc') == 'OK':
forecast = weather_dict.get('data').get('forecast')
print('城市:',weather_dict.get('data').get('city'))
print('温度:',weather_dict.get('data').get('wendu')+'℃ ')
print('风向:',forecast[0].get('fengxiang'))
print('分级:',forecast[0].get('fengli'))
print('高温:',forecast[0].get('hign'))
print('低温',forecast[0].get('low'))
print('天气:',forecast[0].get('type'))
print('日期:',forecast[0].get('date'))
print('*******************************') four_day_forecast = input('是否显示未来四天的天气!')
if four_day_forecast == 'yes'or'YES'or'Yes':
for i in range(1,5):
print('日期:', forecast[i].get('date'))
print('温度:', weather_dict.get('data').get('wendu') + '℃ ')
print('风向:', forecast[i].get('fengxiang'))
print('分级:', forecast[i].get('fengli'))
print('高温:', forecast[i].get('high'))
print('低温:', forecast[i].get('low'))
print('---------------------------------')
print('********************************************') show_weather(get_weather_data())
5、使用pickle的什么方法存储数据
pickle.dump(data.file) (data:待存储的数据对象,file:目标存储的文件对象,注意:在使用这个函数之前先使用open文件和‘wb’)
6、使用pickle的什么方法读取数据
pickle.load(file) (参数是目标存储的文件对象,注意要先使用‘rb’的open文件)
7、编写一个程序,这次要求使用pickle将文件(record.txt)里的对话按照以下要求腌制成不同文件
#小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)
#小客服的对话单独保存期girl_*.txt的文件(去掉“小客服:”)
#文件中共有三段对话,分别保存为boy_1.txt,girl_1.txt,boy_2.txt,girl_2.txt,boy_3.txt,girl_3.txt共6个文件(提示:文件中不同的对话间已经使用“===========”分割)
import pickle
def save_file(boy,gril,count):
boy_file_name = 'boy'+str(count)+'.txt'
gril_file_name = 'gril'+str(count)+'.txt'
boy_file = open(boy_file_name,'wb')
gril_file = open(gril_file_name,'wb')
pickle.dump(boy,boy_file)
pickle.dump(gril,gril_file)
boy_file.close()
gril_file.close()
def open_file(file_name):
count = 0
boy = []
gril = []
f = open(file_name)
for each_line in f:
if each_line[:6]!= '========':
(role,each_spken) = each_line.split(':',1)
if role == '小甲鱼':
boy.append(each_spken)
if role == '小客服':
gril.append(each_spken)
else:
save_file(boy, gril, count)
boy = []
gril = []
count += 1
save_file(boy, gril, count)
f.close()
open_file('record.txt')
【Python31--pickle函数】的更多相关文章
- 关于python中的pickle函数
8-7参考阅读 - 读文件.写文件.异常处理.文件保存游戏.pickle数据转成文本的过程又被称为"序列化",即将对象状态转换为可保持或传输的格式的过程.对应的,从序列化的格式中解 ...
- 用python pickle库来存储数据对象
pickling有一个更常用的叫法是serialization,它是指把python对象转化成字节流byte stream, unpickling就是把byte stream转换成对象.python的 ...
- 序列化 pickle模块
1. pickle 简介 2. pickle 核心函数 3. pickle 高级 -- 复杂对象 1. 持久化与 pickle 简介 1.1 什么是持久化? 持久化的基本思想很简单.假定有一个 Pyt ...
- 利用python进行数据分析之数据加载存储与文件格式
在开始学习之前,我们需要安装pandas模块.由于我安装的python的版本是2.7,故我们在https://pypi.python.org/pypi/pandas/0.16.2/#downloads ...
- Head First Python-Python中与文件相关的操作-读、处理、写
最近在看head first python,前面也写了一些笔记,但是基本上没有涉及到一些完整的代码,现在将书中的文件相关操作的代码整理,供以后参考. 主要分为两大部分,读取文件.处理异常,处理文件.存 ...
- 基于线程开发一个FTP服务器
一,项目题目:基于线程开发一个FTP服务器 二,项目要求: 基本要求: 1.用户加密认证 2.允许同时多用户登录 3.每个用户有自己的家目录 ,且只能访问自己的家目录 4.对用户进行磁盘配 ...
- 《Python学习手册 第五版》 -第9章 元组、文件与其他核心类型
本章的主要内容是介绍了元组和文件的使用,同时作为介绍数据类型的最后一个章节,本章也总结和复习了前面所介绍的核心数据类型,总结的部分在此不多介绍,因为前面章节都有,在此就重点介绍以下两点内容 1.元组 ...
- Effective python(五):内置模块
1,考虑使用contextlib和with语句改写可复用的try/finally代码 with lock:print('lock is held')相当于try:print('lock is held ...
- [python](windows)分布式进程问题:pickle模块不能序列化lambda函数
运行错误:_pickle.PicklingError: Can't pickle <function <lambda> at 0x000002BAAEF12F28>: attr ...
- 函数和常用模块【day06】:pickle模块(十二)
本节内容 1.dumps序列化和loads反序列化 2.dump序列化和load反序列化 3.序列函数 1.dumps序列化和loads反序列化 dumps()序列化 1 2 3 4 5 6 7 8 ...
随机推荐
- Selenium基础知识(二)鼠标操作
一.鼠标操作 这个需要使用webdriver下的ActionChains类,这个类是操作鼠标操作的: from selenium.webdriver import ActionChains 鼠标操作可 ...
- soapUI学习文档(转载)
soapUI 学习文档不是前言的前言记得一个搞开发的同事突然跑来叫能不能做个WebService 性能测试,当时我就凌乱了,不淡定啊,因为我是做测试的,以前连WebService 是什么不知道,毕竟咱 ...
- oracle将unix 时间戳转换为date类型
select to_date('19700101','yyyyMMdd')+numtodsinterval(8*3600,'second')+numtodsinterval(60,'second') ...
- Js闭包学习笔记
好多内容摘抄了大神的博客内容,只为分享记录.如有冒犯,请见谅 参考文章 http://www.cnblogs.com/libin-1/p/5962269.html http://www.cnblogs ...
- 在统一软件开发过程中使用UML
如何在统一软件开发过程中使用UML? 起始阶段常用UML图 在起始阶段,通常有用例图.类图.活动图.顺序图等UML图的参与. 获取用户需求之后首先要将这些需求转化为系统的顶层用例图. 在确定了用例之后 ...
- 准备dbcp2-2.1.1和pool2-2.4.2 、commons-dbcp-1.4jar包
下载地址:https://pan.baidu.com/s/1gtcW36Lz6Yt-j9WlTu31Pw
- Nginx技术研究系列6-配置详解
前两篇文章介绍了Nginx反向代理和动态路由: Ngnix技术研究系列1-通过应用场景看Nginx的反向代理 Ngnix技术研究系列2-基于Redis实现动态路由 随着研究的深入,很重要的一点就是了解 ...
- Linux中常用的50个命令
1. [命令]:cat [功能说明]: concatenate files and print on the standard output #连接文件并打印到标准输出,有标准输出的都可以用重定向定向 ...
- DNN模型训练词向量原理
转自:https://blog.csdn.net/fendouaini/article/details/79821852 1 词向量 在NLP里,最细的粒度是词语,由词语再组成句子,段落,文章.所以处 ...
- 【Alpha版本】冲刺阶段——Day3
[Alpha版本]冲刺阶段--Day3 阅读目录 今日进展 问题困难 明日任务 今日贡献量 TODOlist [今日进展] 密码算法方面: 参考了md5/sha1+salt和Bcrypt后,我们决定使 ...