您的位置:首页 > 编程语言 > Python开发

Python中csv模块的用法

2017-01-16 15:24 405 查看

1. 写入并生成csv文件

代码:

# coding: utf-8

import csv

csvfile = file('csv_test.csv', 'wb')
writer = csv.writer(csvfile)
writer.writerow(['姓名', '年龄', '电话'])

data = [
('小河', '25', '1234567'),
('小芳', '18', '789456')
]
writer.writerows(data)

csvfile.close()


wb中的w表示写入模式,b是文件模式

写入一行用writerow

多行用writerows

2. 读取csv文件

代码:

# coding: utf-8

import csv

csvfile = file('csv_test.csv', 'rb')
reader = csv.reader(csvfile)

for line in reader:
print line

csvfile.close()


运行结果:

root@he-desktop:~/python/example# python read_csv.py

[‘\xe5\xa7\x93\xe5\x90\x8d’, ‘\xe5\xb9\xb4\xe9\xbe\x84’, ‘\xe7\x94\xb5\xe8\xaf\x9d’]

[‘\xe5\xb0\x8f\xe6\xb2\xb3’, ‘25’, ‘1234567’]

[‘\xe5\xb0\x8f\xe8\x8a\xb3’, ‘18’, ‘789456’]

3.完整的例子

import csv

# dialect是访问csv文件时需要指定的参数之一,用来确定csv文件的数据格式
# 下面这个函数列举系统支持的dialect有哪些,默认值是'excel',用户也可
# 以从Dialect派生一个类,使用该类的实例作为dialect参数。
print csv.list_dialects()

def test_writer():
# csv文件必须以二进制方式open
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

def test_reader():
with open('eggs.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
print row

# sniffer 用来推断csv文件的格式,不是很准确
def test_sniffer():
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ')

spamwriter.writerow(['Spam'] * 2 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

# 通常你需要指定与写入者相同的文件格式才能正确的读取数据
with open('eggs.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ')
for row in spamreader:
print ', '.join(row)

# 如果不知道文件格式,sniffer就可以派上用场了
with open('eggs.csv', 'rb') as csvfile:
# 用sniffer推断文件格式,从而得到dialect
dialect = csv.Sniffer().sniff(csvfile.read(1024))
print dialect.delimiter, dialect.quotechar

# 文件重新移动到头部
csvfile.seek(0)

# 用推断出来的dialect创建reader
reader = csv.reader(csvfile, dialect)

for row in reader:
print ', '.join(row)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python