说明:因为最近做自动化和压测总涉及到大量数据的读写问题,所以这里记录下
读取csv文件数据
- 根据csv文件的数据组织,主要有2种方式:
-
csv.reader(file, delimiter=',')
,默认读取的每行数据是以逗号分隔(也可以是'\t'),返回:读取的每一条数据是list类型。此方法主要用于csv文件没有指定变量头 -
csv.DictReader(file, delimiter=',')
,csv文件的第一行会被识别为变量头,非第一行会被识别为数据并以有序字典OrderedDict的形式返回。此方法主要用于csv文件指定了变量头。
# csv文件,文件有变量头,数据以tab分割
'''
name password
aa 11
bb 22
'''
import csv
def read_csv():
# 方式1
with open(file_path) as file:
csv_reader = csv.DictReader(file, delimiter='\t')
for row in csv_reader:
# 第一行为标题头: name,password
print(row) # OrderedDict([('name', 'aa'), ('password', '22')])
print(row['name'], row['password']) # 返回:aa bb
# 方式2:
csv_reader2 = csv.reader(file, delimiter='\t')
for row2 in csv_reader2:
# 第一行不会被识别为标题头而是数据
print(row2) # List类型,['name', 'password']
print(row2[0], row2[1]) # name password
将数据写入csv文件
- 根据要写入csv文件的数据格式主要有2种方式:
-
csv.writer(file, delimiter=',')
,将列表的每一个元素依次写入csv文件的某行 -
csv.DictWriter(file, fieldnames, delimiter=',')
,将dict数据的值依次写入csv文件的某行
def write_csv():
# 加上newline='',避免以append 方式写入csv 文件时,出现多余的空行
with open(file_path, 'a', newline='') as file:
csv_writer = csv.writer(file, delimiter='\t')
# 将可迭代对象的元素依次写入 csv 文件的同一行
csv_writer.writerow(["cc", "33"])
# 以字典方式写入
csv_writer2 = csv.DictWriter(file, fieldnames=['name', 'password'])
# 将 fieldnames 写入文件
#csv_writer2.writeheader()
csv_writer2.writerow({"name": "cc", "password": "33"})
网友评论