Python3 调用 csv.DictReader - 对象不可调用

Python3 calling csv.DictReader - object is not callable

我是Python的新手,正在编写一个简单的代码来对我的日常开支进行分类。该程序读取包含交易的 csv 文件,执行一些数学运算,然后打印出结果。在此先感谢您的支持。

问题: 在代码中第二次调用csv.DictReader时报错。

错误: 第 12 行,在 csv.reader = csv.DictReader(csvfile, delimiter = ';') 文件“/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/csv.py”,第 86 行,在 init 中 self.reader = reader(f, 方言, *args, **kwds) 类型错误:'DictReader' 对象不可调用

import csv

ledgerDebit = []
ledgerCredit = []

with open('jan2022_full.csv', 'r') as csvfile:
    csv.reader = csv.DictReader(csvfile, delimiter = ';')
    for row in csv.reader:
        ledgerDebit.append(row)

with open('jan2022credit_full.csv', 'r') as csvfile:
    csv.reader = csv.DictReader(csvfile, delimiter = ';')
    for row in csv.reader:
        ledgerCredit.append(row)

而不是

csv.reader = csv.DictReader(csvfile, delimiter = ';')

使用

import csv

ledgerDebit = []
ledgerCredit = []

with open('jan2022_full.csv', 'r') as csvfile:
    reader = csv.DictReader(csvfile, delimiter = ';')
    for row in reader:
        ledgerDebit.append(row)

with open('jan2022credit_full.csv', 'r') as csvfile:
    reader = csv.DictReader(csvfile, delimiter = ';')
    for row in reader:
        ledgerCredit.append(row)

reader 只是 class reader 的一个变量,如果您使用 csv.reader = ...,您实际上是在尝试覆盖 class 中的定义csv 模块

https://docs.python.org/3/library/csv.html#csv.DictReader