python-3.x - 尝试在 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!")
解决方案
(移动评论回答)
nasData
包括文件中的所有行,包括标题行。使用 将数据转换为字典时DictReader
,仅处理数据行,因此len(nasData)
总是比len(nasIn)
正如 OP 所提到的,迭代元素不起作用,因此需要使用行号才能使脚本正常工作:(recNum) == nasIn.line_num
推荐阅读
- spring-boot - 未给出初始偏移量时,Spring Boot kafka 侦听器未读取消息
- json - 是否有 Google Sheets 或 MS Excel 公式将带有 JSON 数组的列转换为多行
- python - 如何以与加密货币交易所相同的方式在 python 中计算 RSI14?
- vlc - 使用 vlc 的动态视频流
- mobile - 如何根据手机号码跟踪位置/状态?
- shopify-app - 通过公共应用程序附加 Collections.Liquid 文件
- java - 如何修复 JAXB 上下文的 newInstance 中的 nullPointerException
- git - git subtree 和只是在子目录中克隆 git 有什么区别?
- android-studio - 如何在textview下面画一条线
- outlook-redemption - 手动制作.Pst文件时的大小问题