【Python学习笔记Day31】5.7 永久存储(转化为文件)
把列表,字符串变为文本很简单
把文本数据恢复为列表,字符串等就变得很复杂
python提供了一个模块,讲列表,字典等数据类型转化为二进制文件
pickle模块 几乎可以把python的对象转化为二进制存放
存放:pickling
读取:unpickling
import pickle #在使用前导入模块
my_list = [123,'weivid',['anothor']]
写入文件
pickle_file = open('31_my_list.pkl','wb') #建议使用后缀名为pkl的文件名,注意使用wb形式
两种方法:
pickle.dump(my_list,pickle_file)#把my_list列表放入文件中
pickle_file.close() #文件关闭
pickle_file1 = open('31_my_list.pkl','rb') #rb形式
my_list2 = pickle.load(pickle_file1)
print(my_list2)
pickle_file1.close()
下面给出一个简单的例子,但是现在这里的url获取已经无法成功了
import urllib.request
import json
import pickle
pickle_file=open('city_data.pkl','rb')
city= pickle.load(pickle_file)
password=input('请输入城市:')
name1=city[password]
File1 =urllib.request.urlopen('http://m.weather.com.cn/data/'+name1+'.html')#打开url
weatherHTML= File1.read().decode('utf-8')#读入打开的url
weatherJSON = json.JSONDecoder().decode(weatherHTML)#创建json
weatherInfo = weatherJSON['weatherinfo']
#打印信息
print ( '城市:', weatherInfo['city'])
print ('时间:', weatherInfo['date_y'])
print ( '24小时天气:')
print ('温度:', weatherInfo['temp1'])
print ('天气:', weatherInfo['weather1'])
print ('风速:', weatherInfo['wind1'])
print ('紫外线:', weatherInfo['index_uv'])
print ('穿衣指数:', weatherInfo['index_d'])
print ('48小时天气:')
print ('温度:', weatherInfo['temp2'])
print ('天气:', weatherInfo['weather2'])
print ('风速:', weatherInfo['wind2'])
print ('紫外线:', weatherInfo['index48_uv'])
print ('穿衣指数:', weatherInfo['index48_d'])
print ('72小时天气:')
print ('温度:', weatherInfo['temp3'])
print ('天气:', weatherInfo['weather3'])
print ('风速:', weatherInfo['wind3'])
input ('按任意键退出:')