Python pandas调用to_csv时报错Expected type 'None', got 'str'如何解决
报错原因
你遇到的Expected type 'None', got 'str' instead提示绝大多数场景是IDE(如PyCharm、VS Code)的静态类型检测误报,不属于Python运行时的实际报错:pandas的to_csv()方法传入路径字符串参数时,返回值本身就是None,你的代码没有接收该返回值,正常运行不会抛出异常。
如果确实出现运行时崩溃,大概率是to_learn列表删除current_card后为空,旧版本pandas处理空DataFrame输出csv时会触发类型校验异常。
解决方案
- 若为IDE提示不影响运行:直接忽略即可,也可添加注释关闭该行的类型检测,同时建议加
index=False参数避免输出多余的索引列:
def is_known(): to_learn.remove(current_card) data_learnt = pandas.DataFrame(to_learn) # PyCharm用户加下一行注释 # noinspection PyTypeChecker # VS Code用户加下一行注释 # type: ignore data_learnt.to_csv("skip.csv", index=False)
- 若为运行时实际报错:添加空列表判断逻辑,避免空DataFrame调用
to_csv(),同时补充global声明明确全局变量修改,避免作用域异常:
def is_known(): global to_learn to_learn.remove(current_card) if not to_learn: # 可自行替换为学习完成的业务逻辑 print("所有闪卡已学习完毕") return data_learnt = pandas.DataFrame(to_learn) data_learnt.to_csv("skip.csv", index=False)
内容的提问来源于stack exchange,提问作者Tanisha
相关产品推荐
相关产品推荐

