Python读取与写入CSV文件需要导入Python自带的CSV模块,然后通过CSV模块中的函数csv.reader()与csv.writer()来进行CSV文件的读取与写入。
写入CSV文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import csv # 需要import csv的文件包 out = open ( "aa.csv" , 'wb' ) # 注意这里如果以‘w'的形式打开,每次写入的数据中间就会多一个空行,所以要用‘wb' csv_write = csv.write(out,dialect = 'excel' ) # 下面进行具体的内容写入 ss = [ 'a' , 3 ] csv_write.writerow(ss) #这样ss里面的信息就被写入到aa.csv文件中了,而且是在两列中 #这里如果需要写入多行,那么就采用循环进行循环输入就可以了 out.close() |
读取CSV文件
1
2
3
4
5
6
7
8
9
10
11
|
import csv out = open ( "aa.csv" , 'r' ) read_csv = csv.reader(out,dialect = 'excel' ) for line in read_csv: #循环输出csv中的所有数据 print line out.close() |
知识点扩展:
1
|
import csv |
读文件
reader方法
1
2
3
4
5
6
7
8
9
|
with open ( './data.csv' , 'r' ) as f: reader = csv.reader(f) # python 2 header = reader. next () # python 3x 使用python内置的next header = next (reader) #获取真正的数据 for row in reader: print (row) # 打印每一行,列表类型,只能按位置索引 |
稍微介绍一下next(iterable, [default ])函数,它是python3x内置的,用于遍历可迭代对象的方法,其中iterable可以使字符串、列表、字典、元祖、集合等。若default给出,那么遍历到头时返回这个值,不然就抛异常。
这让我想到了字典的get()方法,它也有类似作用。比如,
1
2
|
# 如果dic里面没有key1这个键,那就返回我们指定的0 dic.get( 'key1' , 0 ) |
DictReader方法
写文件
跟读对应, 写操作也有两个方法
writer方法,适用列表的列表
1
2
3
4
5
6
7
8
|
with open ( './data.csv' , 'w' ) as f: header = [ 'col1' , 'col2' , ...] writer = csv.writer(f) writer.writeheader(header) for row in row_list: writer.writerow(row) # 或直接调用 writer.writerows(row_list) |
DictWriter方法,适用字典列表
1
2
3
4
5
6
7
|
with open ( './data.csv' , 'w' ) as f: dictwriter = csv.DictWriter(f) dictwriter.writeheader(dic_list[ 0 ].keys()) for dic in dic_list: writer.writerow(dic) # 或者一次性写入,直接调用 wrier.writerows(dic_list) |
都是些比较基础的操作,在这里记录一下。如果你觉得有帮助,就更好了。