11.1 csv--CSV文件读写库
2016-05-22 21:50
232 查看
11. 文件格式
本库主要提供了CSV、INI、NETRC、XDR等文件格式操作。
csv.reader(csvfile, dialect='excel', **fmtparams)
返回一个读取文件csvfile的读取对象。参数csvfile需要是一个支持迭代协议,并且每次调用__next__()方法之后返回一个字符串,比如文件对象或者列表对象都是合适的,如果csvfile是文件对象,打开时应该把newline=’’设置进去;参数dialect是用来选择支持不同CSV格式标准,默认是支持excel标准;参数fmtparams是用来指定特定的CSV格式。
每次从读取对象返回一行csv文件的数据时,都是使用一个字符串列表来表示。
csv.writer(csvfile, dialect='excel', **fmtparams)
返回一个写入CSV文件的写入对象。参数csvfile是一个支持write()函数的对象,如果它是一个文件对象,它应该使用newline=’’参数打开;参数dialect是表示选择支持csv的标准方式;参数fmtparams是表示写入csv的特别格式。
csv.register_dialect(name, [dialect, ]**fmtparams)
注册一种新csv的格式。参数name是新格式的名称;参数dialect是一个Dialect的子类;参数fmtparams是格式参数。
csv.unregister_dialect(name)
注销一种新csv的格式。参数name是这种格式的名称。
csv.get_dialect(name)
返回名称name的注册格式。
csv.list_dialects()
返回所有注册的格式列表。
csv.field_size_limit([new_limit])
返回分析器支持最大的字段长度。如果参数new_limit有值,就是设置为最新的字段长度。
class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
创建一个支持字典方式参数读取的csv文件对象。
class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
创建一个支持字典方式参数写入的csv文件对象。
class csv.Dialect
创建Dialect类,包含基本csv文件的基本属性。
class csv.excel
excel类是用来支持Excel生成的CSV文件,它的名称叫做'excel'。
class csv.excel_tab
excel_tab类是用来支持tab键方式的格式的文件,它的名称叫做 'excel-tab'。
class csv.unix_dialect
unix_dialect类是适合UNIX系统下生成的CSV文件使用,它的名称叫做 'unix'。
class csv.Sniffer
Sniffer类用来推断CSV文件的格式。
csv.QUOTE_ALL
对象writer是否对字段写入双引号的标志。
csv.QUOTE_MINIMAL
对象writer是否仅对特殊标志字符串写入双引号。
csv.QUOTE_NONNUMERIC
对象writer 是否对非数字字段加双引号。
csv.QUOTE_NONE
对象writer不对任何字段进行添加双引号。
exception csv.Error
操作任何一个函数出错就会抛出此异常。
为了方便对CSV文件进行格式控制,需要定义一个类来记录这些格式信息,这个类就叫做Dialect。这个类定义的方法和属性如下:
Dialect.delimiter
定义字段之间的分隔字符,默认是使用逗号‘,’。
Dialect.doublequote
指示如果遇到双引号的字符是否添加双引号,默认是True。
Dialect.escapechar
指示使用转义字符,默认是None,不使用转义字符。
Dialect.lineterminator
指示一行结束的字符,默认是\r\n。
Dialect.quotechar
定义使用双引号的字符,默认是“””。
Dialect.quoting
控制什么时候生成引号。默认值是QUOTE_MINIMAL。
Dialect.skipinitialspace
是否忽略分隔符之后的空格。如果设置为True就忽略,否则不忽略。默认是False。
Dialect.strict
错误的CSV文件输入时,如果本参数设置为True就抛出异常。默认是False。
Reader对象
csvreader.__next__()
返回读取下一行数据,以列表的方式返回。
csvreader.dialect
分析器使用的CSV格式规则。
csvreader.line_num
从文件里读取多少行。
csvreader.fieldnames
从文件里读取的字段名称。
Wirter对象:
csvwriter.writerow(row)
写一行数据到CSV文件,根据当前dialect规范进行格式化。
csvwriter.writerows(rows)
写多行数据到CSV文件,根据当前dialect规范进行格式化。
csvwriter.dialect
一个只读的dialect规范,用来格式化CSV的数据。
DictWriter.writeheader()
写一行字典的字段名称。
生成CSV文件的例子:
#python 3.4
import csv
with open('test.csv', 'w', newline='') as fp:
a = csv.writer(fp, delimiter=',')
data = [['Me', 'You'],
['293', '219'],
['54', '13']]
a.writerows(data)
读取CSV文件的例子:
#python 3.4
import csv, sys
filename = 'test.csv'
with open(filename, newline='') as f:
reader = csv.reader(f)
try:
for row in reader:
print(row)
except csv.Error as e:
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
结果输出如下:
['Me', 'You']
['293', '219']
['54', '13']
蔡军生 QQ:9073204 深圳
本库主要提供了CSV、INI、NETRC、XDR等文件格式操作。
11.1 csv--CSV文件读写库
本模块主要提供了对CSV文件进行操作的功能,因为CSV文件在电子表格和数据库方面都大量地使用,把它当作一种数据交换方式,比如从数据库导出生成电子表格,或者从电子表格导入到数据库。这里描述操作的CSV文件,是符合RFC 4180标准的文件格式。本CSV模块实现了对CSV文件格式进行读取和写入,换句话说,就是支持生成CSV文件然后给EXCEL进行查看,或者从EXCEL生成的CSV文件可以读取出来。csv模块提供了两个对象reader和writer,分别对应了读取和写入的功能,同时也可以使用支持字典的类DictReader和DictWriter。csv.reader(csvfile, dialect='excel', **fmtparams)
返回一个读取文件csvfile的读取对象。参数csvfile需要是一个支持迭代协议,并且每次调用__next__()方法之后返回一个字符串,比如文件对象或者列表对象都是合适的,如果csvfile是文件对象,打开时应该把newline=’’设置进去;参数dialect是用来选择支持不同CSV格式标准,默认是支持excel标准;参数fmtparams是用来指定特定的CSV格式。
每次从读取对象返回一行csv文件的数据时,都是使用一个字符串列表来表示。
csv.writer(csvfile, dialect='excel', **fmtparams)
返回一个写入CSV文件的写入对象。参数csvfile是一个支持write()函数的对象,如果它是一个文件对象,它应该使用newline=’’参数打开;参数dialect是表示选择支持csv的标准方式;参数fmtparams是表示写入csv的特别格式。
csv.register_dialect(name, [dialect, ]**fmtparams)
注册一种新csv的格式。参数name是新格式的名称;参数dialect是一个Dialect的子类;参数fmtparams是格式参数。
csv.unregister_dialect(name)
注销一种新csv的格式。参数name是这种格式的名称。
csv.get_dialect(name)
返回名称name的注册格式。
csv.list_dialects()
返回所有注册的格式列表。
csv.field_size_limit([new_limit])
返回分析器支持最大的字段长度。如果参数new_limit有值,就是设置为最新的字段长度。
class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
创建一个支持字典方式参数读取的csv文件对象。
class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
创建一个支持字典方式参数写入的csv文件对象。
class csv.Dialect
创建Dialect类,包含基本csv文件的基本属性。
class csv.excel
excel类是用来支持Excel生成的CSV文件,它的名称叫做'excel'。
class csv.excel_tab
excel_tab类是用来支持tab键方式的格式的文件,它的名称叫做 'excel-tab'。
class csv.unix_dialect
unix_dialect类是适合UNIX系统下生成的CSV文件使用,它的名称叫做 'unix'。
class csv.Sniffer
Sniffer类用来推断CSV文件的格式。
csv.QUOTE_ALL
对象writer是否对字段写入双引号的标志。
csv.QUOTE_MINIMAL
对象writer是否仅对特殊标志字符串写入双引号。
csv.QUOTE_NONNUMERIC
对象writer 是否对非数字字段加双引号。
csv.QUOTE_NONE
对象writer不对任何字段进行添加双引号。
exception csv.Error
操作任何一个函数出错就会抛出此异常。
为了方便对CSV文件进行格式控制,需要定义一个类来记录这些格式信息,这个类就叫做Dialect。这个类定义的方法和属性如下:
Dialect.delimiter
定义字段之间的分隔字符,默认是使用逗号‘,’。
Dialect.doublequote
指示如果遇到双引号的字符是否添加双引号,默认是True。
Dialect.escapechar
指示使用转义字符,默认是None,不使用转义字符。
Dialect.lineterminator
指示一行结束的字符,默认是\r\n。
Dialect.quotechar
定义使用双引号的字符,默认是“””。
Dialect.quoting
控制什么时候生成引号。默认值是QUOTE_MINIMAL。
Dialect.skipinitialspace
是否忽略分隔符之后的空格。如果设置为True就忽略,否则不忽略。默认是False。
Dialect.strict
错误的CSV文件输入时,如果本参数设置为True就抛出异常。默认是False。
Reader对象
csvreader.__next__()
返回读取下一行数据,以列表的方式返回。
csvreader.dialect
分析器使用的CSV格式规则。
csvreader.line_num
从文件里读取多少行。
csvreader.fieldnames
从文件里读取的字段名称。
Wirter对象:
csvwriter.writerow(row)
写一行数据到CSV文件,根据当前dialect规范进行格式化。
csvwriter.writerows(rows)
写多行数据到CSV文件,根据当前dialect规范进行格式化。
csvwriter.dialect
一个只读的dialect规范,用来格式化CSV的数据。
DictWriter.writeheader()
写一行字典的字段名称。
生成CSV文件的例子:
#python 3.4
import csv
with open('test.csv', 'w', newline='') as fp:
a = csv.writer(fp, delimiter=',')
data = [['Me', 'You'],
['293', '219'],
['54', '13']]
a.writerows(data)
读取CSV文件的例子:
#python 3.4
import csv, sys
filename = 'test.csv'
with open(filename, newline='') as f:
reader = csv.reader(f)
try:
for row in reader:
print(row)
except csv.Error as e:
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
结果输出如下:
['Me', 'You']
['293', '219']
['54', '13']
蔡军生 QQ:9073204 深圳
相关文章推荐
- oacle 删除重复数据
- leetcode 268. Missing Number-寻找丢失的数|位运算
- Python decorator guide
- 设计模式之---装饰者模式
- 设计模式之---工厂模式
- Android高级UI SwipeRefreshLayout下拉刷新
- 11.1 csv--CSV文件读写库
- Panopticon跨平台的逆向工程反汇编工具
- 【转】深入 Linux 的进程优先级
- Missing artifact com.sun:tools:jar:1.5.0
- Java的BoxLayout的水平支撑组件和垂直支撑组件
- Ubuntu 中使用root权限复制粘贴文件
- iOS: initwithframe什么时候会被调用?
- 【机房重构】模板方法模式应用—组合查询
- 学习进度条 第十二周
- 初始博弈【三】Grundy数
- hdu 5701 中位数计数(重构数组)
- 一步一步教你用CSS画爱心
- list、set和map的区别
- Java大牛养成记(8)——何为servlet?