私はglob
次のようにファイル名をループにフィードするために使用しています:
inputcsvfiles = glob.iglob('NCCCSM*.csv')
for x in inputcsvfiles:
csvfilename = x
do stuff here
このスクリプトのプロトタイプを作成するために使用したおもちゃの例は、2、10、または100個の入力csvファイルで正常に機能しますが、実際には、10,959個のファイルをループする必要があります。その数のファイルを使用すると、スクリプトは最初の反復後に機能を停止し、2番目の入力ファイルを見つけることができません。
スクリプトは「妥当な」数のエントリ(2〜100)で完全に正常に機能しますが、必要な数(10,959)では機能しないことを考えると、この状況を処理するためのより良い方法、または設定できるある種のパラメータがあります。多数の反復を許可しますか?
PS-最初は使用してglob.glob
いましたが、glob.iglobフェアはそれ以上のものではありません。
編集:
より多くのコンテキストのための上記の拡張...
# typical input file looks like this: "NCCCSM20110101.csv", "NCCCSM20110102.csv", etc.
inputcsvfiles = glob.iglob('NCCCSM*.csv')
# loop over individial input files
for x in inputcsvfiles:
csvfile = x
modelname = x[0:5]
# ArcPy
arcpy.AddJoin_management(inputshape, "CLIMATEID", csvfile, "CLIMATEID", "KEEP_COMMON")
do more stuff after
スクリプトは、「csvfile」変数がコマンドに渡されるArcPy行で失敗します。報告されたエラーは、実際にはcsvが確実にディレクトリにあるのに、指定されたcsvファイル(「NCCSM20110101.csv」など)が見つからないことです。上記のように、宣言された変数(x)を複数回再利用できない可能性がありますか?繰り返しになりますが、これは、グロブされているディレクトリに100程度のファイルしかない場合は正常に機能しますが、大量のファイル(たとえば、10,959)がある場合は、リストのどこかで任意に失敗します。