列表未在 Try except 期间附加

问题描述

这只是我所拥有的一小部分。最终,我正在检查 Esri 地理数据库中的 2 种类型的 RBJ 表。如果表不存在,我想将地理数据库名称附加到新列表中。

我创建了一个名为 missing_rbj 的新空列表。我需要代码来检查是否有 RBJ 表,执行所需的附加到 CSV,如果出现错误(因为没有 RBJ 表),然后将 aoi_name 附加到列表中。当我在最后打印列表时,即使多个项目被标记为 No RBJ Exists,它也会返回空。对于更多背景,此尝试除了在 for 循环内,其中 x 是地理数据库的路径。我将 aoi_name 定义为从原始路径拆分的 gdb 名称

    missing_rbj = []
    aoi_name = x.split("\\")[-1]
    aoi_name = aoi_name.replace(".gdb","")

    try:
        ses_table = r'{0}\GDB_REVSESSIONTABLE'.format(x)

        ses_ids = {}
        with arcpy.da.SearchCursor(ses_table,['SESSIONID','USERNAME']) as ses_cursor:
            for row in ses_cursor:
                ses_ids[row[0]] = row[1]

        # REVCHECKRUNTABLE
        rev_table = os.path.join(x,"REVCHECKRUNTABLE")

        if arcpy.Exists(rev_table):
            rev_data = []
            rev_table_headers = ['SESSIONID','RECORDID','BATCHJOBDATETIME','BATCHJOBGROUPNAME','CHECKNAME','CHECKTITLE','CHECKruncONTEXT','RESOURCENAME','TOTALVALIDATED','TOTALRESULTS']

            with arcpy.da.SearchCursor(rev_table,rev_table_headers) as rev_cursor:
                for row in rev_cursor:
                    csv_write = []
                    analyst = ses_ids[row[0]]
                    for x in row:
                        csv_write.append(x)
                    csv_write.append(aoi_name)
                    csv_write.append(analyst[:2].upper())
                    csv_write.append(datetime.datetime.Now())
                    rev_data.append(csv_write)

            with open(rbj_revcheck_csv,'ab') as f:
                wr = csv.writer(f)
                for h in rev_data:
                    wr.writerow(h)

        # REVTABLEMAIN
        rev_main = r'{0}\REVTABLEMAIN'.format(x)

        if arcpy.Exists(rev_main):
            flds = [t.name for t in arcpy.ListFields(rev_main)]
            rev_data = []
            with arcpy.da.SearchCursor(rev_main,flds) as main_cursor:
                for row in main_cursor:
                    csv_write = []
                    for i in row:
                        csv_write.append(i)
                    csv_write.append(aoi_name)
                    csv_write.append(analyst[:2].upper())
                    csv_write.append(datetime.datetime.Now())
                    rev_data.append(csv_write)

            with open(rbj_revmain_csv,'ab') as f:
                wr = csv.writer(f)
                for h in rev_data:
                    wr.writerow(h)
        print "RBJ Good!\n"

    except:
        missing_rbj.append(aoi_name)
        print "No RBJ Exists in GDB.\n"

任何帮助将不胜感激!我有一种感觉,这是我多次忽略的事情。这是一个相当长的项目!

解决方法

好吧,就像我说的那样,这绝对是我忽略的东西。我忘记了,因为空列表在 for 循环中,在 for 循环完成后它将不再存在。我将 missing_rbj 移到了循环之外,它奏效了!