ich versuche:Kopieren einer Datei an einen neuen Speicherort und Schrittdateiname, Python
- Schleife durch ein Bündel von Dateien
- nimmt einige Änderungen
- Kopieren Sie die alte Datei in einem Unterverzeichnis. Hier ist der Kicker Ich möchte die Datei im neuen Verzeichnis nicht überschreiben, wenn sie bereits existiert. (zB wenn "Dateiname.mxd" bereits existiert, dann kopieren und umbenennen zu "Dateiname_1.mxd". Wenn "Dateiname_1.mxd" existiert, dann kopiere die Datei als "Dateiname_2.mxd" und so weiter ...)
- speichern sie die Datei (aber nicht speichern a, a wie so nicht speichern, dass sie die vorhandene Datei überschrieben)
es etwas geht:
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()
so, 2 Dinge, die ich zu tun beschlossen wurde um die Bandbreite der Dateien weit über das zu setzen, was ich jemals erwarten würde (50). Ich bin mir sicher, dass es eine bessere Möglichkeit gibt, dies zu tun, indem einfach zur nächsten Nummer erhöht wird, ohne einen Bereich festzulegen.
Die zweite Sache, wie Sie sehen können, ist, dass das Skript alles in der Reihe speichert. Ich möchte es nur einmal bei der nächsten Instanz von i speichern, die nicht auftritt.
Hoffnung macht das Sinn,
Mike
Ich versuchte dies und es stürzt ab, wenn die Speicherung stattfindet. Nicht wirklich sicher warum ... – Mike