Python编写dataLoad函数加载文件时报_io.TextIOWrapper无len()错误求助
问题解答
报错原因
你触发的object of type '_io.TextIOWrapper' has no len()报错根源非常明确:open(filename, 'r')返回的是文件句柄对象(类型为_io.TextIOWrapper),这类对象本身没有长度属性,你直接将其赋值给Data变量后调用len(Data),自然会触发该报错。
你需要先将文件中的数据读取并转换为支持取长度、按索引访问的结构(比如列表、numpy数组)后,再做后续的遍历、取值操作。
需求理解偏差确认
从你写的代码注释来看,你对核心过滤规则的理解是正确的:
- 温度必须处于10~60区间内
- 生长速率必须为正数
- 细菌类型只能是指定的4种对应值
但当前你的逻辑和需求有几处明显不符的地方:
- 测试文件格式错误:你给出的测试文件内容是Python代码,而
dataLoad接收的是filename参数,应该读取的是每行存3个字段的纯数据文本文件,不能直接读包含numpy数组定义的py文件。 - 终止逻辑错误:你在检测到无效行时直接调用了
return,会直接终止整个函数,剩下的所有行都不会被处理,不符合“遇到无效行打印提示后继续处理下一行”的要求。 - 温度判断逻辑错误:你写的
60<Data[1+n:1]<10逻辑上永远不成立,且取某行某列值的切片写法不符合语法要求。 - 循环逻辑冗余:你嵌套了for循环和while循环来遍历行,属于不必要的逻辑冗余,单层循环即可完成遍历需求。
内容的提问来源于stack exchange,提问作者ibo a
相关产品推荐
相关产品推荐

