常用的数据存储介质有文件、关系式数据库和非关系式数据库。文本文档存储适用于具有时效性的数据,入股市行情、商品信息和排行榜信息等,这类数据具有动态变化性质,非特殊要求下,建议存放文件。
写入数据分为单行写入和多行写入,对应的函数分别为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)读取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)