更好的csv模块
cordwainer的Python项目详细描述
更好的csv库
功能
- 让您在Python2和Python3中编写程序,就像 python 3 csv模块。
- Under Python 2, provides a Python 3 compatible csv module.
- Under Python 3, passes through transparently.
- 允许您的csv文件以任何方式进行编码。
python 3兼容性
import cordwainer.csv as csv应该等同于导入 Python3csv模块,无论是与Python2或3一起运行。见 Python 3 csv module documentation
csv文件编码
python 2 csv模块希望将文件句柄传递给 返回用ascii或utf-8编码的数据,并将其写入文件 同样的方式。
python 3 csv模块期望传递给它的句柄返回文本 已解码的数据,并将未编码的文本数据写入它们。是的 你负责在打开文件时安排转换, 或者通过某种转换来传送流。
使用cordwiner,只需传递一个额外的encoding参数 表示流提供或期望二进制数据 使用指定的编码,Cordwiner将负责 所有必要的转换。
如果省略encoding或None,cordwiner假设 提供的流将提供或期望未编码的文本数据,仅 就像python 3的csv模块。
杂项使用说明
encoding参数仅适用于从和读取 在溪流中写作。
字符串参数应始终传递给api 作为字符,结果总是字符。
例如:
- 将字段名作为字符传递给听写器
- 将行中的数据作为字符传递给writeRow()
- next()以字符形式返回行
预期(最终)功能
- 可选标题行
- 验证预期的字段、类型(可能指定django表单 进行验证)
- 详细的错误处理-说出问题出在哪一行, 对于每一个有错误的行
- 在出现n个错误后可以选择停止处理
- (可选)导入在跳过无效行时有效的行 一个
- 可以选择在一个事务中完成整个事务
- (可选)忽略任何额外的列
- 可选地保存上传的文件,然后在后台处理它 任务(不延迟http请求) 对于Excel,灵活地决定要导入什么样的表——甚至 从一次上载的多张工作表导入