You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取CSV存入列表时遇TypeError错误求助

问题排查与解决

你的代码存在几个关键问题,导致了TypeError错误,以下是逐一修正方案:

错误原因

  1. 类方法未绑定实例:read_csv_file作为类的实例方法,缺少第一个必填参数self,无法访问实例的属性(比如你定义的self.list)。
  2. 误用内置类型:循环里的list.append(row)调用的是Python内置的list类方法,而非你实例中定义的self.list,自然会报"未绑定方法需要参数"的错误。
  3. 参数被硬编码覆盖:你在方法里用filepath = "*file name*.csv"覆盖了传入的参数,导致无法灵活指定文件路径。
  4. 无返回值却赋值:read_csv_file没有返回值,但你在main里用cs.list = cs.read_csv_file(),会把None赋值给cs.list,覆盖原有的空列表。

修正后的代码

读取CSV的类代码(建议重命名为read_csv_file.py)

import csv

# 类名遵循PEP8规范,用大驼峰命名
class CSVFile:
    def __init__(self):
        # 避免用list做变量名,和内置类型重名易混淆
        self.data_list = []

    # 添加self参数,保留filepath参数用于传入文件路径
    def read_csv_file(self, filepath):
        # 打开文件时指定newline和编码,避免换行符问题和乱码
        with open(filepath, "r", newline="", encoding="utf-8") as csv_file:
            reader = csv.reader(csv_file)
            # 直接将reader转换为列表,替代循环append,更简洁
            self.data_list = list(reader)

        # 如果你需要保留循环append的写法,替换成下面的代码:
        # for row in reader:
        #     self.data_list.append(row)

main.py代码

from read_csv_file import CSVFile

def main():
    # 创建类实例
    cs = CSVFile()
    # 传入你的实际CSV文件路径
    cs.read_csv_file("your_actual_file.csv")
    # 直接打印实例中存储数据的列表
    print(cs.data_list)

if __name__ == "__main__":
    main()

关键修正点说明

  • 给类方法添加self参数,确保能访问实例的属性。
  • 用self.data_list替代list,明确操作的是实例的列表属性。
  • 移除硬编码的文件路径,改为通过参数传入,提升代码灵活性。
  • 简化数据读取逻辑:直接将csv.reader转换为列表,省去循环append的步骤(如果需要逐行处理数据,再保留循环写法)。

内容的提问来源于stack exchange,提问作者Ryan Bukhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:42:43