这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战
复习回顾
我们日常工作中总是离不开对各类文件操作,强大的Python也提供我们对不同文件的模块方法。
- Python内置提供open()、write()等基本的读取操作
- 对文本进行删除、移动、复制等高级的操作的shutil模块
- 对文件路径提供的相关操作,os.path、pathlib模块
- 创建临时目录、文件等操作的template模块
- 还有对文件进行专门的压缩、解压的zipfile、tarfile、gzip等模块
本期,我们将学习通过Python CSV库对Excel表格进行相关操作学习,let's go~
1. CSV 模块概述
csv 模块是python内置库,专门提供对电子表格.csv结尾的文件操作方法。
-
什么是 csv 文件
- csv 是使用逗号分隔值文件格式,可以使用记事本或者Excel打开
- csv 文件以纯文本形式存在,通常用作数据存储使用
- csv 文件每条记录都有同样的字段序列
-
csv 模块特点
- csv 模块实现对csv文件表格数据的读写
- csv 兼容Excel输出的数据文件
- csv 可以定义其他程序CSV格式
-
csv 模块使用
csv 模块是Python内置的,因此只需在代码中使用import来进行导入即可
import csv
2. CSV 相关方法
-
csv 模块提供相关方法
方法 | 作用 |
---|---|
csv.reader(csvfile) | 对csv文件进行逐行变量 |
csv.writer(csvfile) | 将用户数据写入到指定的文件对象中并转换成分隔符的字符串 |
csv.register_dialect(name,[,dialect]) | 将dialect与name关联起来 |
csv.unregister(name) | 从变种注册表中删除name对应变种 |
csv.get_dialect(name) | 返回name对应的变种 |
csv.list_dialects() | 返回所有已注册变种的名称 |
csv.field_size_limit() | 返回解析器当前运行最大自短板大小 |
-
csv 模块提供相关属性
属性 | 作用 |
---|---|
csv.QUOTE_ALL | 指示writer对象给所有字段加上引号 |
csv.QUOTE_MINIMAL | 指示writer对象仅包含特殊字符的字段加上引号 |
csv.QUOTE_NONNUMERTC | 指示writer对象为所有非数字字段转换为float类型 |
csv.QUOTE_NONE | 指示writer对象不使用引号引出字段 |
-
csv 模块提供相关类方法
方法 | 作用 |
---|---|
class csv.DictReader(f,filedname,restkey,restval,dialect='excel',*args,**kwds) | 创建一个可以映射到一个dict的对象 |
class csv.DictWriter(f,filedname,restkey,restval,dialect='excel',*args,**kwds) | 创建一个可以以字典形式写入到输出行 |
class csv.dialect | 是一个容器类,属性包含如何处理双引号、空白符、分隔符 |
class csv.excel | 定义Excel生成csv文件的常规属性 |
class csv.excel_tab | 定义Excel生成制表符分隔的CSV文件常规属性 |
class csv.unix_dialect | 定义在UNIX系统上生成CSV文件常规属性 |
class csv.Sniffer | 推断CSV文件格式 |
-
csv.DictReader 实例对象属性
方法 | 作用 |
---|---|
csvreader.next() | 等同于next(reader)返回迭代对象下一行 |
csvreader.dialect | 变化描述,只读 |
csvreader.line_num | 源迭代器一级读了的行数 |
csvreader.filednames | 字段名称 |
-
csv.DictWriter 实例对象属性
方法 | 作用 |
---|---|
csvwriter.writerow(row) | 将row形参写入到writer文件对象 |
csvreader.writerows(rows) | 将row* 中所有元素写入到writer文件对象 |
-
csv.Dialect 实例对象属性
方法 | 作用 |
---|---|
Dialect.delimiter | 一个用于分隔字段的单字符,默认为“,” |
Dialect.doublequote | 控制出现在字段中引号字符本身如何被引出 |
Dialect.escapechar | 用于writer的单字符 |
Dialect.lineterminator | 放在writer产生行的结尾,默认"\r\n" |
Dialect.quotechar | 单字符,用于包住有特殊字符的字段 |
Dialect.quoting | 控制writer何时生成引号 |
Dialect.skipinitialspace | 如果为True,则忽略,默认为False |
Dialect.strict | 如果为True则输入错误的CSV时抛出error异常,默认为False |
3. 小试牛刀
我们根据上面已经学习到的cvs模块的方法来实操一下吧
-
读取指定csv文件中数据,并逐行打印出来
- 我们要使用with上下文管理器进行打开csv文件
- 设置dialect属性 delimiter 字符串有效界定符为“,”
- 设置quotechar属性,quotechar 包含特殊字符的字段
import csv with open(r"C:\Users\user\Desktop\devices.csv",newline="") as content: content = csv.reader(content,delimiter=",",quotechar="|") for row in content: print("-".join(row))
总结
本期,我们对python内置模块csv相关方法进行学习,了解csv文件格式通常用于数据存储的。
我们在工作中,遇到需要存储数据的,也可以使用csv文件来存储。
以上是本期内容,欢迎大佬们点赞评论,下期见~