Antworten:
In Bezug auf ein Dateisystem ist eine Datei gdb ein Verzeichnis. Der Versuch, eine Datei als einzelne Datei zu kopieren, funktioniert nicht. Probieren Sie es aus:
import shutil, errno
def copyanything(src, dst):
try:
shutil.copytree(src, dst)
except OSError as exc: # python >2.5
if exc.errno == errno.ENOTDIR:
shutil.copy(src, dst)
else: raise
copytree
der Inhalt der Geodatabase-Datei nicht kopiert werden kann, wenn sich dort .lock
Dateien befinden. Es wird ein Fehler angezeigt, bei dem die Berechtigung verweigert wurde. Das Copy
GP-Tool kopiert die Geodatabase auch dann, wenn dort Sperren vorhanden sind (ein Benutzer hat ein Feature-Class-Eigenschaftenfenster geöffnet oder navigiert einfach in der Geodatabase im Katalogfenster)!
Andere Option:
http://help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#//001700000051000000
import arcgisscripting
gp = arcgisscripting.create()
gp.Copy_management(r"C:\test.gdb", r"C:\test_COPY.gdb")
arcpy.Copy_management(r"inPath", r"outPath")
für die Arcpy-Methode (Version 10 im Gegensatz zu 9.3)
Ich habe ein einfaches Skript zum Kopieren von Geodatabases in Unterordnern erstellt. Es läuft recht gut. Hoffe das hilft
import sys, arcpy, os
input_folder = "pro_mdb"
output_folder = "file-geodatabase"
curr_file = os.getcwd()
pro_mdb = os.path.join(curr_file,input_folder)
fgeodatabase = os.path.join(curr_file,output_folder)
folders = os.listdir(pro_mdb)
for folder in folders:
arcpy.env.workspace = os.path.join(pro_mdb,folder)
filegdb = arcpy.ListWorkspaces("*","FileGDB")
if len(filegdb) > 0:
filegdb_name = os.path.basename(filegdb[0])
ofgeodatabase = os.path.join(fgeodatabase,filegdb_name)
if not arcpy.Exists(ofgeodatabase):
try:
arcpy.Copy_management(filegdb[0],ofgeodatabase)
print "Da copy xong: %s" %(filegdb[0])
except Exception as e:
print e.message
else:
print "Da ton tai: %s" %(filegdb_name)
else:
print "Khong co FGB cua tinh %s" %(folder)