1
Python的存储技术
编写程序通常涉及到需要将数据永久存储下来。通常数据存储分为文件存储和数据库存储。Python主要提供了如下的存储技术:
(1)文件存储:JSON(XML)存储、csv文件存储
(2)数据库存储:MySQL、Redis、Mongdb等数据库存储
数据在被存储后,另一种操作就是要读取里面的数据。
2
JSON存储
例1是将JSON数据保存并读取。例子中的JSON数据来自百度搜索,然后人工录入近两年的GPD数据。在真实的应用场景中,需要保存的数据大部分来自于爬虫数据,可以参考我们前面公众号文章中的爬虫数据获取案例,将这些技术组合起来使用即可。
例1:保存JSON数据,并读取
| import json#JSON数据的结构:[{},{},{}...]data=[{"year":2019,"gdp":990865.10, "primary_industry":70466.70, "secondary_industry":386165.30, "third_industry":534233.10}, {"year": 2018, "gdp": 900309.00, "primary_industry": 64734.00, "secondary_industry": 366001.00, "third_industry": 469575.00} ]def save_data(filename): fo = open(filename, "w") json.dump(data, fo) fo.close()def get_data(filename): fo = open(filename) mydata = json.load(fo) return mydatasave_data("c:\gdp.json")mydata=get_data("c:\gdp.json")print(type(mydata))for gdp in mydata: print(gdp) |
下面对代码进行解释:
(1)open(filename, "w"):打开一个文件,返回一个file对象,参数“w”表示只用于文件写入。默认是以只读方式打开。
(2)json.dump(data, fo):将数据序列化为JSON对象后,写入文件。
(3)json.load(fo):从文件中读取JSON形式的字符串数据,返回JSON对象列表。
3
csv数据存储
csv是一种字符分隔符格式的文件,常用来存储表格数据。csv文件可以被Excel软件打开。例2演示如何读取JSON文件中的数据,写入csv文件中,并从csv文件中读取数据。由于例1已经有读写JSON的代码,在例2中,演示如何将例1的方法封装起来,进行模块调用。下面首先介绍如何自定义模块。
(1)在项目下创建一个目录,即模块的名字,例如本例的myJSON。

图1 创建模块
(2)在模块下面,新建一个文件__init__.py(注意:该名字是固定的,init前后各两个下划线)。
(3)在__init__.py中编写代码。把例1中save_data("c:\gdp.json")以上的代码复制进去,即可。
例2:csv存储与读取
import csv import myJSON gdp_json_list=myJSON.get_data("c:\gdp.json") #获得JSON的键 gdp_title = gdp_json_list[0].keys() gdp_data = [] for data in gdp_json_list: gdp_data.append(data.values()) #打开gdp.csv文件,如果不存在,则新建 #参数newline=''表示不产生空行 csv_file = open('gdp.csv', 'w',newline='') csv_writer = csv.writer(csv_file) #写入1行数据:用作表头 csv_writer.writerow(gdp_title) #写入多行数据:GDP数据 csv_writer.writerows(gdp_data) #关闭文件 csv_file.close() with open('gdp.csv') as csv_file: reader = csv.reader(csv_file) for row in reader: print(str(row)) |
下面对代码进行解释:
(1)import csv:导入csv模块
(2)import myJSON:导入前面自定义的模块。
(3)gdp_data.append(data.values()):data.values()为JSON关键字对应的值,用dict_values([值1,值2])表示,可以通过list(data.values())将其转换成列表。append()方法是在列表末尾添加新的对象,这里的对象是JSON值。
(4)csv.writer(csv_file):针对要写入csv数据的文件,返回一个csv writer对象,用于向csv文件进行数据写入。
(5)csv.reader(csv_file):针对要读取csv数据的文件,返回一个csv reader对象,用于向csv文件读取数据。
END
撰稿 | 谢景明
编辑 | 秦慧
审核 | 谢景明、冯敬益

微信号:xinxisuyang-扫码关注我们-

被折叠的 条评论
为什么被折叠?



