📒 读取数据
本节介绍使用Recorder从文件读取数据。
- xlsx、csv、txt、jsonl 文件均是行结构,可用
rows()方法获取遍历行,从中筛选获取需要的数据。 - xlsx 和 csv 还可根据表头或列序号在行数据中按列获取数据。
- xlsx 文件可用
set.table()设置要读取的数据表。 - 对于 json 文件,
rows()方法所有参数都没有意义,它返回和json模块load()方法相同的结果。 - db 和 byte 类型文件不支持
rows()方法,db 类型文件可用run_sql()方法自行构建查询语句读取数据。
✅️ rows()方法
Recorder对象的rows()方法用于从文件读取指定数据。可根据条件获取多行。
不支持 byte 类型文件。
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
cols | strintlistTrue | True | 作为关键字的列,可以是多列,传入str代表表头值,传入int代表列序号,为True获取所有列 |
sign_col | strintTrue | True | 用于筛选数据的列,传入str代表表头值,传入int代表列序号,为True获取所有行 |
signs | Any | None | 按这个值筛选目标行,可用列表设置多个 |
deny_sign | bool | False | 是否反向匹配sign,即筛选sign_col列的值不是sign指定值的行 |
count | int | None | 获取多少条数据,为None获取所有 |
begin_row | intNone | None | 数据开始的行,None表示header_row后面一行 |
end_row | intNone | None | 数据结束的行,None表示最后一行 |
| 返回类型 | 说明 |
|---|---|
List[RowData] | xlsx 和 csv 格式文件返回RowData对象组成的列表 |
List[RowText] | txt 格式文件返回RowText对象组成的列表 |
List[RowDict, RowList, RowStr, RowInt, RowFloat, RowNone] | jsonl 格式文件返回的列表中的对象类型取决于该行数据 |
listdict | json 格式文件的返回和json模块load()方法相同 |
说明
txt 和 jsonl 格式文件只有begin_row和end_row参数有效。
简单示例:
打印文件内所有数据。注 意是从第二行开始,因为默认第一行是表头。
from DrissionRecord import Recorder
r = Recorder('data.xlsx')
r.set.table('abc') # 指定数据表,如不指定默认读取活动数据表
for row in r.rows():
print(row)
✅️ 行数据对象
rows()方法返回的结果中,每行数据为一个数据对象。
- xlsx 和 csv 文件为
RowData对象 - txt 文件为
RowStr对象 - jsonl 文件为
RowDict,RowList,RowStr,RowInt,RowFloat,RowNone对象,取决于该行内容
RowDict是一个dict,增加了row属性表示行号,且可用序号切片读取数据,序号从1开始。
RowNone与None等价。
其它类型继承自其相应基本类型,只比基本类型多了row属性。
📌 RowData
RowData对象是 xlsx 和 csv 文件产生的行数据,本身是一个dict。
键为表头值或列序号(表头值为空的列)。还增加了行和列有关的属性和方法。
💡 row
此属性返回某条数据的行号。
💡 header
此属性返回数据使用的表头对象。
💡 coord()
此方法返回数据中指定列的坐标。
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
key_or_num | strint | 必填 | 某列,为int时表示列序号,为str时表示表头值 |
col_num | bool | False | 列以列号还是列序号形式返回 |
| 返回格式 | 说明 |
|---|---|
(int, str) | col_num为False时返回格式为(1, 'A') |
(int, int) | col_num为True时返回格式为(1, 1) |
💡 col()
此方法返回数据中指定列的列号或列序号。
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
key_or_num | strint | 必填 | 某列,为int时表示列序号,为str时表示表头值 |
as_num | bool | True | 以列号还是列序号形式返回 |
| 返回类型 | 说明 |
|---|---|
| str | as_num为False时返回格式为'A' |
| int | as_num |