【问题标题】:data consistency check : TypeError: argument of type 'NoneType' is not iterable数据一致性检查:TypeError:“NoneType”类型的参数不可迭代
【发布时间】:2018-05-18 14:17:00
【问题描述】:

所以基本上我正在编写一些代码来交叉检查我的数据是否一致。 我已经编写了下面的代码,但它一直显示 TypeError:'NoneType' 类型的参数不可迭代,我尝试更改代码很多次,但仍然出现相同的错误。非常感谢。

def checkdata(sex,school):
    if (sex == 'F') and ('boys school' in school) :
        return 'inconsistent'
    if (sex == 'M') and ('girls school' in school):
        return 'inconsistent'
    return


def Dif() :
    with arcpy.da.UpdateCursor(DATA_SET,
        [sex, school]) as Cursor :
    for Cols in Cursor :

            Data = checkdata(Cols[0], Cols[1])
            if Data is not None:
                print (Data, " ",Cols)

【问题讨论】:

  • 我怀疑错误消息在for 语句中(您未能包含完整的错误消息),这意味着CursorNone,而不是您所期望的。使用一个或两个 print 语句来跟踪您正在使用的值。如果仍有问题,请发帖Minimal, complete, verifiable example。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。
  • 在哪里发生错误?顺便说一句,我认为在checkdata() 末尾显式返回None 会更好...
  • 事实上,完整的错误信息表明错误出在这两个代码上: if (sex == 'F') and ('boys school' in school) : return 'inconsistent' if ( sex == 'M') and ('girls school' in school): return 'inconsistent' >>>

标签: python typeerror nonetype


【解决方案1】:

在这种情况下,'Cursor' 变量是 None,您可以在循环使用之前通过打印它来检查它。

当循环尝试迭代 None 时,它​​会引发显示的错误。

更新:

在这种情况下,我建议学校是 None 并且上面的推理成立。在提出此类问题时,请包含完整的错误消息。

【讨论】:

  • 感谢您的帮助,但我尝试了与其他函数相同的循环,它很好,而且错误消息表明问题出在这两行:if (sex == 'F') 和('男校'在学校):返回'不一致'如果(性别=='M')和('女校'在学校):返回'不一致。只是我仍然无法找出问题所在。
【解决方案2】:

啊。对于您的一个数据记录,您必须获得一个None 作为school 的值。 TypeErrorin 运算符抛出,它期望序列类型作为第二个操作数。 None 不是序列类型 - 它是 None ;-)

尝试将print(sex, school) 添加为checkdata() 的第一行,以确认参数是否符合您的预期。

【讨论】:

  • 谢谢。我认为这是我遇到的问题。学校和性方面的一些数据丢失了,所以一旦没有,它就会停止并显示错误。所以我现在要做的就是继续运行,即使盒子里没有。
猜你喜欢
  • 2011-10-04
  • 1970-01-01
  • 2019-04-15
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多