python读写CSV文件

在使用Python进行数据爬取的时候,
需要将爬下来的数据写入文件中,
这里记录一下使用Python对CSV文件的读写。

CSV文件

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),
其文件以纯文本形式存储表格数据(数字和文本)。

import csv

csv.reader(csvfile [, dialect='excel'] [optional keyword args])
csv.writer(csvfile [, dialect='excel'] [optional keyword args])

csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

冯奎博客

一、列表读取CSV文件(reader)

# coding:utf-8
import csv
with open('test.csv', 'r') as csvFile:
    f_csv = csv.reader(csvFile)
    for line in f_csv:
        print line

获取结果 冯奎博客

二、列表写入CSV文件(writer)

# coding:utf-8
import csv
headers = ['编号','姓名','性别','年龄']
rows = [
        [5,'王五','男',24],
        [6,'赵六','男',16],
        [7,'小红','女',20],
        [8,'小娜','女',18]
    ]

with open('test.csv', 'w') as csvFile:
    f_csv = csv.writer(csvFile)
    f_csv.writerow(headers) # 写入单行
    f_csv.writerows(rows) # 写入多行

(注:打开文件我们看都文件有空行,这是加入参数 newline='')

with open('test.csv', 'w', newline='') as csvFile:

冯奎博客

三、字典读取CSV文件(DictReader)

# coding:utf-8
import csv
with open('test.csv', 'r') as csvFile:
    f_csv = csv.DictReader(csvFile)
    for line in f_csv:
        print(dict(line))

冯奎博客

四、字典写入CSV文件(DictWriter)

import csv
rows = [
        {'编号': '9', '姓名': '小九', '性别': '女', '年龄': '18'},
        {'编号': '10', '姓名': '十月', '性别': '男', '年龄': '20'},
    ]
fieldnames = ['编号','姓名','性别','年龄'] # 定义表头字段

with open('test.csv', 'w', newline='') as csvFile:
    f_csv = csv.DictWriter(csvFile, fieldnames=fieldnames)
    f_csv.writeheader() # 写入表头
    f_csv.writerows(rows) # 将要写入的数据一次性写入到文件,也可以使用cr.writerow()一次写入一行

写读追加状态

'r':读
'w':写
'a':追加
'r+' == r+w(可读可写,文件若不存在就报错(IOError))
'w+' == w+r(可读可写,文件若不存在就创建)
'a+' == a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

冯奎博客
请先登录后发表评论
  • latest comments
  • 总共0条评论