0

我想知道是否有人会在我的硬件任务中帮助我迈出一步......

到目前为止,这是我的 python 程序——它完成了它应该做的事情。

# Import system modules
import sys, string, os, arcgisscripting

# Create the Geoprocessor object
gp = arcgisscripting.create()

# Load required toolboxes...
gp.AddToolbox("C:/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")

# Script argum ents...
Input_Table = sys.argv[1]
gp.addmessage("sys.argv[1] is " + Input_Table)

Field_Name = sys.argv[2]
gp.addmessage("sys.argv[2] is " + Field_Name)

# Local variables...
Output_Feature_Class = ""

# Process: Add Field...
gp.AddField_management(Input_Table,     Field_Name, "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")

我的任务是解压缩我的第二个参数 (sys.argv[2]) 以将其分解为列表中的多个项目,然后在循环中包含添加字段代码以添加多个字段值。

显然,python 不是我的菜。我确信这是一项简单的任务。

非常感谢!

4

4 回答 4

0

使用模型构建器,我创建了一个基本脚本来向表中添加字段。我的任务是 (1) 能够向 Arc 中的数据表添加六个字段。(2) 将数据集的结果写入该表。

通过我所做的,我可以将多个字段添加到我在 Arc 中创建的空 shapefile,但我必须每次运行脚本并手动输入字段名称。(这都是在 Arc 中运行的,但我在 IDLE 中编辑它)。

上面的脚本是我最初拥有的。我添加了新字段的列表:

new_fields=['DOM_CLASS', 'DOM_LIMIT', 'DOM_VAL', 'SUB_CLASS', 'SUB_LIMIT', 'SUB_VAL']

我将拆分添加到 sys.argv[2] 的末尾

 Field_Name = sys.argv[2].split(',')

这是我收到错误消息的地方

我把脚本的最后一行放在一个循环中

 for i in range (len(new_fields)):
     gp.AddField_management(Input_Table, Field_Name, "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")

因此,我需要“将 sys.argv[2] 解压缩到列表中的多个项目中,然后将添加字段代码包含在一个循环中以添加多个字段值。”

我是否需要考虑标题中的范围是 3 到 8。

我花了几个小时阅读(并试图理解)我能找到的所有在线 python 帮助。我真的很感谢你的帮助。

于 2010-10-18T04:39:45.153 回答
0

要将 sys.argv[2] 分解为一个由任何字符分隔的列表,请使用以下格式:sys.argv[2].split(<character to split by>)其中“要分割的字符”可以是“/”,如果你想用正斜杠字符分割,或者“,”如果你想用逗号分隔。在 Python 的交互模式下尝试它并在将为 sys.argv[2] 输入的一些字符串上进行测试。要遍历列表,请使用 a:for i in range(len(<list name>)):遍历列表中由我向您展示的 split 函数返回的所有项目。我不想放弃一切,所以我会把你留在那里,希望你能弄清楚剩下的!祝你好运。

于 2010-10-14T09:17:17.727 回答
0

1)您可以跳过新数组的迭代器: for item in new_fields:

这会将新变量项设置为数组每个部分的值。

for item in new_fields:
    gp.AddField_management(Input_Table,item,"TEXT","","","","","NULLABLE","NON_REQUIRED","")

2)您的错误是因为您正在拆分数组对象。Split 旨在处理字符串对象。如果你有:

new_fields = "DOM_CLASS,DOM_LIMIT,DOM_1,DOM_2"
Split_fields = new_fields.split(',')

然后,Split_Fields 将 = ["DOM_CLASS","DOM_LIMIT","DOM_1","DOM_2"]

于 2013-03-20T18:41:38.193 回答
0

首先,你得到的错误信息是什么?你给你的脚本什么输入(我想看看你如何从命令行运行 python 脚本,比如:'python myFile.py arg1 arg2')?

你将需要这样的东西:

for i in range(len(new_fields)): 
     Field_Name = new_fields[i] 
     gp.AddField_management(Input_Table, Field_Name, "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")

让我知道这是否解决了您的问题。

于 2010-10-22T21:32:34.643 回答