我已经尝试了几天了,我仍然感到困惑,并为何以下代码无效而感到困惑。
在调用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()
答案 0 :(得分:1)
你可能有拼写错误。尝试更改
if lineNumber(file, fileb):
到
if lineNumber(filea, fileb):
答案 1 :(得分:0)
我发现了这个问题。我已经更新了上面的代码。谢谢大家