PyQt5中调用Pandas的to_csv()报错No engine for filetype: 'csv'如何解决
问题根因及修复方案
报错原因
你本地非GUI环境单独调用to_csv()正常,是因为没有走该函数的条件判断逻辑,直接执行了正确的csv导出方法;GUI中调用时报错,是函数内部的判定语法存在疏漏:
# 此处为错误代码行 if file[-4] == '.csv':
file[-4]的作用是取文件路径字符串的倒数第4个单个字符,永远不可能等于长度为4的字符串.csv,因此所有文件都会进入else分支调用to_excel()方法。当传入csv格式文件时,pandas尝试用excel导出逻辑处理csv后缀的文件,就会抛出No engine for filetype: 'csv'的错误。
修复方法
补全切片语法的冒号即可:
# 修改前 # if file[-4] == '.csv': # 修改后 if file[-4:] == '.csv':
优化建议
- 推荐使用Python字符串内置的
endswith()方法判断后缀,兼容性更强,不会出现文件名长度不足4位时的索引报错,写法也更简洁:
if file.endswith('.csv'):
- 建议文件读取逻辑也同步替换为
endswith()写法,和导出逻辑保持一致,避免出现潜在的判定不一致问题。
内容的提问来源于stack exchange,提问作者Pap113
相关产品推荐
相关产品推荐

