一、python读取csv文件内容
reader(csvfile, dialect='excel', **fmtparams)
参数说明:
csvfile | 必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对象,打开时需要加"b"标志参数。 |
dialect | 编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义。 |
fmtparam | 格式化参数,用来覆盖之前dialect对象指定的编码风格。 |
读取上述csv文件,代码如下:
import csv
file = open(r'C:\DATA\test\selenium_test\test_python\user_csv.csv','rb')
lines = csv.reader(file)
title_list = ['name','pwd']
user_list = []
for user in lines:
zip_object = zip(title_list,user)
user_dict = dict(zip_object)
user_list.append(user_dict) # 得到了由多个用户名密码组成的字典的列表,供后续使用
print(user_list) #[{'name': 'zxf', 'pwd': '123'}, {'name': 'nsf', 'pwd': '456'}, {'name': 'jzz', 'pwd': '789'}]
二、python写入csv文件内容
writer(csvfile, dialect='excel', **fmtparams)
参数意义同上。
import csv
file = open(r'C:\DATA\test\selenium_test\test_python\user_csv.csv','w',newline='') # 文件不存在,会自动新建;文件存在,则会清空后再写入
# open时如果不指定newline='',则每写入一行将有一空行被写入
lines = csv.writer(file)
user_list = [{'name': 'zxf', 'pwd': '123'}, {'name': 'nsf', 'pwd': '456'}, {'name': 'jzz', 'pwd': '789'}]
for row in user_list:
lines.writerow(row.values()) # 字典的值写入csv文件内 writerow()方法是一行一行写入,writerows方法是一次写入多行
写入结果如下:
发现这是和打开方式有关,将打开的方法改为wb即可,代码如下:
with open(os.path.join(outpath,'result.csv'),'wb') as cf:
writer = csv.writer(cf)
writer.writerow(['shader','file'])
for key , value in result.items():
writer.writerow([key,value])