首页 > 解决方案 > 尝试在 Python 中比较两个整数

问题描述

好的,我一直在挖掘 Stackoverflow 和其他网站,试图了解为什么这不起作用。我创建了一个打开 csv 文件的函数。该函数打开文件一次以计算行数,然后再次实际处理文件。我正在尝试做的是这个。一旦文件被处理并且记录计数匹配。然后我会将数据加载到数据库中。问题是记录数不匹配。我检查了两个变量,它们都是'int',所以我不明白为什么'=='对我不起作用。这是我创建的函数:

def mktdata_import(filedir):
    '''
    This function is used to import market data
    '''
    files = []
    files = filedir.glob('*.csv')

    for f in files:
        if fnmatch.fnmatch(f,'*NASDAQ*'):
            num_rows = 0
            nasObj = []
            with open(f,mode='r') as nasData:
                nasIn = csv.DictReader(nasData, delimiter=',')
                recNum = sum(1 for _ in nasData)

            with open(f,mode='r') as nasData:
                nasIn = csv.DictReader(nasData, delimiter=',')
                for record in nasIn:
                    if (recNum - 1) != num_rows:
                        num_rows += 1
                        nasObj.append(record)
                    elif(recNum - 1) == num_rows:
                        print('Add records to database')
                    else:
                        print('All files have been processed')

            print('{} has this many records: {}'.format(f, num_rows))
            print(type(recNum))
            print(type(num_rows))

        else:
            print("Not a NASDAQ file!")

标签: python-3.x

解决方案


(移动评论回答)

nasData包括文件中的所有行,包括标题行。使用 将数据转换为字典时DictReader,仅处理数据行,因此len(nasData)总是比len(nasIn)

正如 OP 所提到的,迭代元素不起作用,因此需要使用行号才能使脚本正常工作:(recNum) == nasIn.line_num


推荐阅读