arcpy.ListFeatureClassesで複数のワイルドカードパラメーターを使用する


12

これを行う方法がなければならないことは知っていますが、その方法を理解するのに苦労しています。オペレーションを実行するためのフィーチャクラスのリストを作成したいのですが、2つの別個の異なるファイル名識別子を持つフィーチャクラスをリストに含める必要があります。コードは次のようになります。

FCS = arcpy.ListFeatureClasses("X_*" OR "*_Y")

私はORが間違っていることを知っていますが、2番目のワイルドカードで動作するコードを書き直すことなくこれを行う方法はありますか?痛風を助けてくれてありがとう、ORステートメントを使用して複数のワイルドカードを使用できるSelect By Attributesに選択方法があることを知っています。


ワイルドカードパラメータは、その不足の、入力として文字列を受け取りListFeatureClasses()、潜在的に、それは後に結果を通じてワイルドカード、その後、ちょうどフィルタを通過しないのがベストです、大規模なディレクトリのためにあまりにも遅くなる可能性がある二回(。
ポール・

ポール、それはまさに以下のリスト理解の答えがすることです-リストを実行し、ifステートメントに基づいてフィルタリングします。
dklassen 14

@ dklassen、OPは、開始ではなく「_Y」で終わるFCを探しています。GDBに対してワイルドカードを使用できますが、コードでシェープファイルを使用することはできません。
ポール14

回答:


16

2つを追加すると、それらは単なるリストになります。

FCS = arcpy.ListFeatureClasses("X_*") + arcpy.ListFeatureClasses("*_Y")

重複を排除するには:

FCS = set(arcpy.ListFeatureClasses("X_*") + arcpy.ListFeatureClasses("*_Y"))

@Jason Sheirerに感謝します。startswithとendswithを使用すると、ファイルGDBで機能します。SDEを操作するために使用していたスクリプトを変更したとき、何らかの理由で機能しませんでした。あなたが言及した方法はSDEで機能します。
標準

6

少し違う方法でアプローチできます:

import arcpy
import os

arcpy.env.workspace = 'c:\temp'
fcs = [fc for fc in arcpy.ListFeatureClasses() if fc.startswith('X_') or os.path.splitext(fc)[0].endswith('_Y')]

GDBを使用していない限り、これは実際には機能しません。シェープファイルの拡張子が返されます。
ポール14

これは、設定したワークスペース内のどのフィーチャクラスでも機能するはずです。シェープファイルを含める-拡張機能を返さないのはなぜですか?
dklassen 14

これは、終了文字に対してこれでワイルドカードを使用できないためです-これがOPが行っているように見えることです。
ポール14

@Paul Modified-修正してくれてありがとう。「_Y」の部分が表示されませんでした。
dklassen 14

2
少しきついですが、を使用する必要がありますos.path.splitext()。シェープファイルの名前にピリオドを含めることができます。+1
ポール14

1

このスクリプトは、リストcases[] で複数のワイルドカードを指定します。固有のケースをループして、目的のフィーチャクラス「arcpy.ListFeatureClasses()」をリストします。選択された各フィーチャクラスは、「。extend」を使用してフィーチャクラスの新しいリストに追加されたものです

# Create a list of the wildcards 
cases = ["X_*", ""*_Y""]

# Create empty list to store all selected files
fcs= []

# Loop through files to select files following multiple wildcards
for case in cases:
    fc = arcpy.ListFeatureClasses(case)
    # Insert the fc to the list
    fcs.extend(fc)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.