Python 将列表传递给另一个函数

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

我正在使用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.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']