Страница 2 из 2

Re: Python заполнить колонку

Добавлено: 26 авг 2013, 16:18
Andrey Zhukov
Значит, попробуйте второй вариант.

UPD!
Нет, это я все в размышлениях о курсорах насоветовал. Категорически без codeblock ничего не выйдет. В общем, либо питон и курсоры, либо инструмент и кодблок.
Как-то так:

Код: Выделить всё

def calcPreview(myVar,dataFile):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")

Re: Python заполнить колонку

Добавлено: 27 авг 2013, 12:30
doujin
Можно и без курсоров, главное в инструмент калькулятора поля передавать полностью корректное выражение. Тут главное не запутаться в кавычках и бэкслешах.

Код: Выделить всё

import arcpy


input_based_on_raster = "C:\\1\\2\\fr_kv1_05002_05000_01_3np2_08_t_pss1_034412_180613_raster_reclass.shp"

myvar = "\"C:\\\\somefolder\\\\\""

arcpy.CalculateField_management(input_based_on_raster, "preview", "{0} + {1}".format(myvar, "!cDataFileN!.replace(\".img\",\"_preview.jpg\").replace(\"\\\"\", \"\")"), "PYTHON_9.3", "")

Re: Python заполнить колонку

Добавлено: 27 авг 2013, 12:43
Andrey Zhukov
doujin , вот это реальная жесть :) Я пока читал - уже запутался.

Re: Python заполнить колонку

Добавлено: 28 авг 2013, 09:51
Syllion
fall_out_bug писал(а):Значит, попробуйте второй вариант.

UPD!
Нет, это я все в размышлениях о курсорах насоветовал. Категорически без codeblock ничего не выйдет. В общем, либо питон и курсоры, либо инструмент и кодблок.
Как-то так:

Код: Выделить всё

def calcPreview(myVar,dataFile):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
А не подскажите, как этот пример использовать?

В PreLogic script я пишу:

Код: Выделить всё

myVar = "C:\\somefolder"
def calcPreview(myVar,!cDataFileN!):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
В поле ниже:

Код: Выделить всё

calcPreview(myVar,!cDataFileN!)

Re: Python заполнить колонку

Добавлено: 28 авг 2013, 10:02
Syllion
doujin, ваш вариант выдает ошибку:
Безымянный1.png
Безымянный1.png (19.41 КБ) 7036 просмотров

Re: Python заполнить колонку

Добавлено: 28 авг 2013, 10:08
Andrey Zhukov

Код: Выделить всё

myVar = "C:\\somefolder"
def calcPreview(myVar,!cDataFileN!):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
Ну так неправильно же!
Вы объявляете переменную !cDataFileN! (что вообще некорректно!), а вызываете dataFile. Плюс объявляете переменную myVar и назначаете ее.
Надо так:

Код: Выделить всё

def calcPreview(myVar, dataFile):
   return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")

Код: Выделить всё

calcPreview("C:\\somefolder\\",!cDataFileN!)

Re: Python заполнить колонку

Добавлено: 28 авг 2013, 10:34
Syllion
О спасибо огромное заработало!

Re: Python заполнить колонку

Добавлено: 28 авг 2013, 13:17
doujin
Syllion писал(а):doujin, ваш вариант выдает ошибку
Писал о том, что бы не запутались в бекслешах, и сам запутался. Исправил код в своем предыдущем сообщении. Там в строке myvar не хватало несколько этих бекслешей.

Re: Python заполнить колонку

Добавлено: 28 авг 2013, 15:36
Syllion
всем спасибо большое