我想知道是否有人会帮助我完成我的硬件任务中的一步......
到目前为止,这是我的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不是我的事。我确信这是一项简单的任务。
非常感谢!
答案 0 :(得分:0)
要将sys.argv [2]分解为由任何字符分隔的列表,请使用以下格式:sys.argv[2].split(<character to split by>)
其中“要分割的字符”可以是类似“/”的内容,如果要按正斜杠字符或“,”如果你想用逗号分隔。在Python的交互模式下尝试它并在一些将为sys.argv [2]输入的字符串上测试它。要遍历列表,请使用:for i in range(len(<list name>)):
遍历我向您展示的拆分函数返回的列表中的所有项目。我不想放弃一切,所以我会把你留在那里,希望你能弄明白其余的!祝你好运。
答案 1 :(得分: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帮助。我非常感谢你的帮助。
答案 2 :(得分: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", "")
如果这解决了您的问题,请告诉我。
答案 3 :(得分:0)
1)您可以跳过新数组的迭代器: 对于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”]