常用的数据存储介质有文件、关系式数据库和非关系式数据库。文本文档存储适用于具有时效性的数据,入股市行情、商品信息和排行榜信息等,这类数据具有动态变化性质,非特殊要求下,建议存放文件。
1、CSV数据写入
写入数据分为单行写入和多行写入,对应的函数分别为writerow和writerows,数据写入CSV的代码如下:
import csv
#若存在csv则打开;若不存在则新建
#若不设置newline='',则每行数据就会隔一行空白行
with open('csv_test.csv','w',newline = '')as csvfile:
writer = csv.writer(csvfile)
#单行写入
writer.writerow(['姓名','年龄','电话'])
#多行写入
data = [
('小p','18','123456789'),
('小y','20','987654321')
]
writer.writerows(data)
2、CSV数据读取
读取CSV文件的函数有reader和DictReader(读取输出全为string类型),reader函数以列表形式返回,DictReader函数以字典的形式返回,字典的键是单元格的标题(列头),字典的值是对应单元格的值。代码如下:
import csv
#获取全部数据
with open('csv_test.csv','r')as csvfile:
#以列表形式输出
reader = csv.reader(csvfile)
#以字典形式输出,第一行作为字典的键
reader = csv.DictReader(csvfile)
#以列表生成器的形式表达,当数据过大时,利用此方法可以解决占用太大内存空间的问题
rows = [row for row in reader]
print(rows)
如果需要获取某行数据,就可以循环全部数据,在对每行数据做一个判断,判断是否符合筛选条件,代码如下:
import csv
#获取单行数据
with open('csv_test.csv','r')as csvfile:
#一列表的形式输出
reader = csv.reader(csvfile)
for row in reader:
if '小p' in row:
print(row)
#以字典的形式输出
reader = csv.DictReader(csvfile)
for row in reader:
if row['姓名'] == '小p':
print(row)