Python 用听写器计数

Python 用听写器计数,python,dictionary,count,Python,Dictionary,Count,对于Python来说还是个新手,以下是我所取得的成就: import csv import sys import os.path #VARIABLES reader = None col_header = None total_rows = None rows = None #METHODS def read_csv(csv_file): #Read and display CSV file w/ HEADERS global reader, col_header, tota

对于Python来说还是个新手,以下是我所取得的成就:

import csv
import sys
import os.path

#VARIABLES


reader = None
col_header = None
total_rows = None
rows = None

#METHODS


def read_csv(csv_file):
#Read and display CSV file w/ HEADERS
    global reader, col_header, total_rows, rows

#Open assign dictionaries to reader
    with open(csv_file, newline='') as csv_file:
        #restval = blank columns = - /// restkey = extra columns +
        reader = csv.DictReader(csv_file, fieldnames=None, restkey='+', restval='-', delimiter=',',
                                quotechar='"')

        try:
            col_header = reader.fieldnames
            print('The headers: ' + str(reader.fieldnames))
            for row in reader:
                print(row)

            #Calculate number of rows
            rows = list(reader)
            total_rows = len(rows)
        except csv.Error as e:
            sys.exit('file {}, line {}: {}'.format(csv_file, reader.line_num, e))


def calc_total_rows():
    print('\nTotal number of rows: ' + str(total_rows))
我的问题是,当我试图计算行数时,结果显示为0(不可能,因为csv_文件包含4行,它们在屏幕上打印)。
我将“#计算行数”代码放在我的打印行循环之上,它可以工作,但是行不打印。这就好像每个任务都在互相窃取字典一样?我该如何解决这个问题?

问题是,
读卡器
对象在CSV中迭代时的行为就像一个文件。首先,你要迭代我在
for
循环中,打印每一行。然后尝试从左边创建一个列表-当您遍历整个文件时,该列表现在为空。此空列表的长度为0

请尝试以下方法:

rows = list(reader)
for row in rows:
    print(row)

total_rows = len(rows)

问题是,
reader
对象在CSV中的迭代行为类似于一个文件。首先,您在
for
循环中迭代,并打印每一行。然后,您尝试从左侧创建一个列表-当您迭代整个文件时,该列表现在为空。此空列表的长度为0

请尝试以下方法:

rows = list(reader)
for row in rows:
    print(row)

total_rows = len(rows)

您在哪里调用
read\u csv()
?对不起,在另一个名为“main.py”的文件中。您在哪里调用
read\u csv()
?对不起,在另一个名为“main.py”的文件中。