私は。。をしようとしています:
- 一連のファイルをループする
- いくつかの変更を行います
- 古いファイルをサブディレクトリにコピーします。新しいディレクトリにファイルが既に存在する場合、そのファイルを上書きしたくないキッカーは次のとおりです。(たとえば、「Filename.mxd」が既に存在する場合は、コピーして「Filename_1.mxd」に名前を変更します。「Filename_1.mxd」が存在する場合は、ファイルを「Filename_2.mxd」としてコピーします...)
- ファイルを保存します (ただし、既存のファイルを上書きするために、名前を付けて保存するのではなく、保存します)
次のようになります。
for filename in glob.glob(os.path.join(folderPath, "*.mxd")):
fullpath = os.path.join(folderPath, filename)
mxd = arcpy.mapping.MapDocument(filename)
if os.path.isfile(fullpath):
basename, filename2 = os.path.split(fullpath)
# Make some changes to my file here
# Copy the in memory file to a new location. If the file name already exists, then rename the file with the next instance of i (e.g. filename + "_" + i)
for i in range(50):
if i > 0:
print "Test1"
if arcpy.Exists(draftloc + "\\" + filename2) or arcpy.Exists(draftloc + "\\" + shortname + "_" + str(i) + extension):
print "Test2"
pass
else:
print "Test3"
arcpy.Copy_management(filename2, draftloc + "\\" + shortname + "_" + str(i) + extension)
mxd.save()
そのため、私がやろうと決めた 2 つのことは、ファイルの範囲を、私が予想する範囲 (50) をはるかに超えて設定することでした。範囲を設定せずに次の数値にインクリメントするだけで、これを行うより良い方法があると確信しています。
2 つ目は、ご覧のとおり、スクリプトが範囲内のすべてを保存することです。発生しない i の次のインスタンスで一度保存したいだけです。
これが理にかなっていることを願って、
マイク