Страница 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("\"", "")
В поле ниже:
Re: Python заполнить колонку
Добавлено: 28 авг 2013, 10:02
Syllion
doujin, ваш вариант выдает ошибку:

- Безымянный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
всем спасибо большое