Python读取CSV文件报错:expected str, bytes or os.PathLike object, not reader
错误原因与代码修正
错误原因
- 你错误地重复赋值变量
ruta:先将它设为打开的文件对象,随后又覆盖成csv.reader实例。此时ruta已不是文件路径字符串,而是CSV读取器对象。 open()函数要求第一个参数必须是路径字符串、字节或路径对象,你传入读取器对象,直接触发了expected str, bytes or os.PathLike object, not reader错误。- 代码存在冗余操作:重复创建文件对象和CSV读取器,且首次打开文件未指定编码,可能引发编码兼容问题。
修正后的代码
import csv # 直接传入文件路径,指定编码打开文件 with open(r"C:\Users\ronald\Documents\PYTHON DATA\importes.csv", encoding='latin1') as fichero_csv: lector = csv.reader(fichero_csv) next(lector, None) # 跳过表头行 importe_total = 0 for linea in lector: importe_str = linea[2] importe = float(importe_str) importe_total += importe # 简化累加逻辑 print(importe_total)
修正说明
- 直接将文件路径字符串传入
open(),同时指定encoding='latin1',确保文件编码匹配 - 删除了冗余的
ruta变量操作,避免类型混淆 - 修正了
linea [2]的空格问题,符合Python代码规范 - 用
+=简化累加操作,代码更简洁易读
内容的提问来源于stack exchange,提问作者Ronald Navarro
相关产品推荐
相关产品推荐

