Python 将列表传递给另一个函数
我正在使用python模块导出SDE数据库中的要素类列表Python 将列表传递给另一个函数,python,function,for-loop,arcpy,Python,Function,For Loop,Arcpy,我正在使用python模块导出SDE数据库中的要素类列表 import os, csv, arcpy, arcplus >>> fcs = arcplus.listAllFeatureClasses("Database Connections\\Connection to oracle.sde\\BASINS.ACF") 输出是一个列表: [u'BASINS.ACF_FL_SUB', u'BASINS.ACF_CHATTAHOOCHEE_BASIN', u'BASINS.A
import os, csv, arcpy, arcplus
>>> fcs = arcplus.listAllFeatureClasses("Database Connections\\Connection to oracle.sde\\BASINS.ACF")
输出是一个列表:
[u'BASINS.ACF_FL_SUB', u'BASINS.ACF_CHATTAHOOCHEE_BASIN', u'BASINS.ACF_CHIPOLA_BASIN', u'BASINS.ACF_CHIPOLA_AL']
为了将此列表传递给另一个函数,我为列表中的每个元素都添加了一个字符串:
mylist = ['Database Connections\\Connection to oracle.sde\{0}'.format(i) for i in fcs]
这看起来像:
print mylist[0]
Database Connections\Connection to oracle.sde\BASINS.ACF_FL_SUB
我想将此列表传递给另一个函数arcpy.ListFields(dataset),该函数将返回每个要素类的字段:
fn=[arcpy.ListFields(mylist[0])中f的f.name]
我试图弄清楚如何将fcs中的列表传递给函数arcpy.ListFields并将结果写入csv文件,但所需的循环结构确实给我带来了麻烦。我是这方面的新手,Python文档让我有了改观。任何指示都会有帮助
_________________________等__________________________________________________
@托尼:你的解决方案很有效。虽然我尝试在更大的地理数据库上使用ListAllFeatureClass,但我没有足够的权限读取某些属性,这导致了一个IOError:数据库连接\Connection to oracle.sde\LAND.LANDS\LAND\u点不存在。我正在研究如何处理这个问题,并继续讨论列表中的下一个要素类。也许试试/继续 要为列表中的每个项目调用arcpy.ListFields:
fns = [[f.name for f in arcpy.ListFields( list_entry )] for list_entry in mylist]
这将为您提供一个列表列表,其中fns[0]是用于输入mylist[0]的函数
使用字典可能更容易:
fns_dict = dict( [ (list_entry, [f.name for f in arcpy.ListFields( list_entry ) ] )
for list_entry in mylist ] )
使用示例中的数据:
fns_dict["BASINS.ACF_FL_SUB"] should be
[u'OBJECTID', u'HUC', u'BASIN', u'NAME', u'ACRES', u'SHAPE', u'SHAPE.AREA', u'SHAPE.LEN']
“为了将此列表传递给另一个函数,我为列表中的每个元素都添加了一个字符串”-这既不必要也不充分。你能提供一个演示问题的例子,并清楚地描述(例如错误跟踪)问题吗?@jornsharpe-我想他的意思是,为了让他的arcpy.ListFields函数工作,他必须在其值前加一个字符串。看起来listAllFeatureClasses返回给定路径中的本地名称(不是完整路径),但ListFields需要完整路径。@TonySuffolk66是的,这是正确的。ListFields需要完整路径。@CFree-在您认为可能失败的任何内容周围放置try/except块总是一个好主意。
fns_dict["BASINS.ACF_FL_SUB"] should be
[u'OBJECTID', u'HUC', u'BASIN', u'NAME', u'ACRES', u'SHAPE', u'SHAPE.AREA', u'SHAPE.LEN']