2016-12-08 12 views
-1

私のサブディレクトリにあるすべてのマップをエクスポートしようとしています。wokringではないサブディレクトリへの移動

エクスポートするコードはありますが、すべてのサブディレクトリでこれを行うループを追加する場所を特定できません。現時点では、ディレクトリ内のマップをエクスポートしていますが、サブフォルダはエクスポートしていません。

import arcpy, os 

arcpy.env.workspace = ws = r"C:\Users\162708\Desktop\Burn_Zones" 

for subdir, dirs, files in os.walk(ws): 

    for file in files: 

     mxd_list = arcpy.ListFiles("*.mxd") 

     for mxd in mxd_list: 

      current_mxd = arcpy.mapping.MapDocument(os.path.join(ws, mxd)) 
      pdf_name = mxd[:-4] + ".pdf" 
      arcpy.mapping.ExportToPDF(current_mxd, pdf_name) 

     del mxd_list 

私は間違ってサブフォルダを繰り返し処理できません。

ありがとうございました!

+0

私は 'os.walk'が作業ディレクトリを変更するとは思わない。 'os.chdir(subdir)'とすることができます –

+0

@Dobbinsはあなたにはその機能に精通していません'os.walk'の? https://docs.python.org/3/library/os.html#os.walk –

答えて

0

os.walkを繰り返すと、タプルは(path, dirs, files)(タプルの最初はfilesを含む現在のパスなので、このように名前を付ける傾向があります)が含まれている必要があります。

arcpy.ListFiles(os.path.join(path, "*.mxd")) 

あなたはまた、ループfor file in filesを削除する必要があります:あなたはこのようarcpy.ListFilesに与えているパスに組み込む必要があるので、現在のディレクトリが自動的に変更されません。ディレクトリごとにファイルをエクスポートしているようですが、毎回ファイルごとにディレクトリ全体をエクスポートするのはなぜですか?

また、あなたはpathが再びos.walkから最初の要素であるarcpy.mapping.MapDocument(os.path.join(path, mxd))arcpy.mapping.MapDocument(os.path.join(ws, mxd))を変更する必要があります。

関連する問題