回答:
以下のコードは、シェープファイルから、「testField」=「A」の定義クエリが保存されているtest_A.lyrというレイヤーファイルを作成します。
import arcpy
arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr")
lyr = arcpy.mapping.Layer("test_lyr")
lyr.name = "test"
lyr.definitionQuery = '"testField" = ' + "'A'"
lyr.saveACopy(r"C:\temp\test_A.lyr")
del lyr
必要に応じて、このレイヤーファイル、またはレイヤーファイルとして保存する前のレイヤーオブジェクト(lyr)をarcpy.mapping.AddLayerを介してマップに追加することもできます。
MakeFeatureLayerのwhere_clauseが定義クエリとして渡されるかどうかを確認するために、文書化されていない動作だと思うため、以下の2番目のテストを実行して@Johnの回答を確認しました。
arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr2",'"testField" = ' + "'A'")
lyr2 = arcpy.mapping.Layer("test_lyr2")
lyr2.name = "test2"
lyr2.saveACopy(r"C:\temp\test_2.lyr")
del lyr2
MakeFeatureLayerジオプロセシングツールを使用してArcmapにレイヤーを読み込む場合、arcpy.mappingクラスレイヤー-definitionQueryを使用して既存のarcmapレイヤーにdefinitionQueryを設定できます。
arcpy.mapping.layer()
に置き換えられましたarcpy.mp.LayerFile()