Python - 按字段比较文件与标题

时间:2016-08-21 09:16:52

标签: python dictionary compare

我已经尝试了几天了,我仍然感到困惑,并为何以下代码无效而感到困惑。
在调用lineNumber函数时,问题似乎与if条件有关。该函数比较了两个文件的长度并且工作正常(尝试过),但是当在if语句中调用时,嵌套代码将不再起作用(fyi - 对于每一行,内部代码比较两个文件中的对应字段值并打印出差异)。如果我在不传递file1和file2的情况下调用该函数(相当于根本不调用它),或者删除if条件,则代码可以正常工作。请问有人可以帮帮我吗?提前谢谢

import csv
def lineNumber(file1, file2):
    if len(list(file1)) == len(list(file2)):
        return True
    else:
        return False

with open('filea.csv', 'rU') as filea, open('fileb.csv', 'rU') as fileb:
    readera = csv.DictReader(filea)
    readerb = csv.DictReader(fileb)
    count = 0
    for rowa,rowb in zip(readera, readerb):
         if lineNumber(filea, fileb):
            diff = [key for key in rowa if rowa[key] != rowb[key]]
            count = count+1
            for key in diff:
               print "Line:", count,"Column:", key, ':', "Expected:",rowa[key], '->', "Actual:", rowb[key] 
         else:
            print "The two files have different line number. Check sources"

filea.close()
fileb.close()

WITH PARAMS - I get NO Results

NO PARAMS - I GET Results

2 个答案:

答案 0 :(得分:1)

你可能有拼写错误。尝试更改

if lineNumber(file, fileb):

if lineNumber(filea, fileb):

答案 1 :(得分:0)

我发现了这个问题。我已经更新了上面的代码。谢谢大家