Python 3.x 尝试在Python中比较两个整数
好的,我一直在通过Stackoverflow和其他网站挖掘,试图理解为什么这不起作用。我创建了一个函数来打开csv文件。函数打开文件一次以计算行数,然后再次打开以实际处理文件。我试图做的就是这样。一旦文件被处理并且记录计数匹配。然后我将把数据加载到数据库中。问题是记录计数不匹配。我检查了两个变量,它们都是“int”,所以我不明白为什么“==”对我不起作用。以下是我创建的函数:Python 3.x 尝试在Python中比较两个整数,python-3.x,Python 3.x,好的,我一直在通过Stackoverflow和其他网站挖掘,试图理解为什么这不起作用。我创建了一个函数来打开csv文件。函数打开文件一次以计算行数,然后再次打开以实际处理文件。我试图做的就是这样。一旦文件被处理并且记录计数匹配。然后我将把数据加载到数据库中。问题是记录计数不匹配。我检查了两个变量,它们都是“int”,所以我不明白为什么“==”对我不起作用。以下是我创建的函数: def mktdata_import(filedir): ''' This function is us
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\u num
尝试使用recNum=sum(1代表nasIn)
nasData
包含标题行。我尝试了一下,现在我的输出如下:marketData\NASDAQ\NASDAQ\u 20201023.csv有这么多记录:1所以,@Mike67在尝试您的解决方案后。我尝试使用(recNum)=nasIn.line_num,它似乎正在工作。我将添加在数据库上传部分,并尝试一下。谢谢你给我指明了正确的方向!