python-2.7 - 在尝试除外期间未附加列表
问题描述
这只是我所拥有的一小部分。最终,我正在为 2 种类型的 RBJ 表检查 Esri 地理数据库。如果表不存在,我想将地理数据库的名称附加到新列表中。
我创建了一个名为missing_rbj 的新空列表。我需要代码来检查是否有 RBJ 表,执行所需的附加到 CSV,如果出现错误(因为没有 RBJ 表),然后将 aoi_name 附加到列表中。当我在最后打印列表时,即使多个项目被标记为不存在 RBJ,它也会返回空。对于更多背景知识,此尝试除外是在 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移到循环之外,它起作用了!
推荐阅读
- python-3.x - 在数据框列中搜索字符串
- javascript - 将正确的数据从 API 插入到 MongoDB
- git - Jenkins 文件的 Jenkins 多分支管道错误
- sql-server - 无法将始终加密的 varbinary 加密列转换为任何类型
- ruby-on-rails - 如何在 ActiveAdmin 的仪表板中使列可排序?
- android - 无法使用 MediaBrowserServiceCompat
- c++ - Pisano 周期生成器在 3 位周期中的行为不正确
- c - 有没有办法将 txt 中的信息直接转换为 struct 声明?
- python - 降低图像分辨率
- php - 是否必须在 Windows 10 中禁用 UAC 才能安装 XAMPP?