Python中CSV框架的构建与应用
1. 元类计数与选项选择
CounterMeta能够为任何需要计数行为的类提供支持。通过应用这个元类,给定类的每个实例都会附带一个计数器属性,可根据实例化时间对实例进行排序,就像表格框架中的列一样。
在选择实现方式时,若处于Python 3环境, __prepare__()
是首选。它无需额外类支持,无需事后对列列表排序,且无需修改 Column
类。而对于早期版本的Python,选择则更具主观性,取决于目标受众和对代码复杂度的接受程度。由于后续示例基于Python 3.1,所以将使用 __prepare__()
。
2. 构建字段库
在大多数声明式框架(包括表格框架)中,字段的主要功能是在原生Python对象和其他数据格式之间进行数据转换。在处理CSV文件时,需要在字符串和字段表示的对象之间进行转换。为此,需要设置两个方法:
- to_python()
:从文件中获取字符串并将其转换为原生Python值,每次从文件读取一行时,会为每列执行此步骤。
- to_string()
:将Python对象转换为字符串,在保存CSV文件时调用。
以下是基础 Column
类的实现:
class Column:
"""
An individual column within a CSV file. This serve