การอัปเดตฟิลด์ด้วยค่าจากรายการ Python โดยใช้ ArcPy UpdateCursor

Oct 14 2020

ฉันกำลังพยายามอัปเดตฟิลด์ของ shapefile ด้วยรายการที่ฉันรวบรวมไว้นอกสภาพแวดล้อม arcpy ลองทั้ง UpdateCursor ซึ่งดูเหมือนจะใช้งานไม่ได้และ FieldCalculator FieldCalculator เพิ่งอัปเดตด้วย "P [2]"

photoname = []

for p in shp_list:
    name = p[2]
    photoname.append(name)

    # arcpy.CalculateField_management(out_shapefile,"PhotoName","'p[2]'","PYTHON_9.3")

ฉันได้ลองแล้ว:

updt_cursor = arcpy.da.UpdateCursor(out_shapefile, fields)
for row in updt_cursor:
    val = str(row[0])
    for p in shp_list:
        if val in p:
            row[2] = p_name
            updt_cursor.updateRow(row)

และ UpdateCursor ว่างเปล่า

ฉันรู้ว่าฉันสามารถสร้าง. txt จากรายการจากนั้นอัปเดตฟิลด์ด้วยบรรทัดในไฟล์. txt ด้วย InsertCursor แต่ฉันรู้สึกว่าควรมีวิธีที่มีประสิทธิภาพมากกว่านี้ สำหรับบริบทฉันกำลังสร้างไฟล์รูปร่างจุดของ X / Y จากข้อมูล exif และต้องการกรอกชื่อรูปภาพที่เกี่ยวข้อง

คำตอบ

2 AnnaForrest Oct 14 2020 at 08:26

ในการแก้ไขคำสั่งเครื่องคำนวณฟิลด์ของคุณให้เปลี่ยนเป็น:

arcpy.CalculateField_management(out_shapefile,"PhotoName","'" + p[2] + "'","PYTHON_9.3")