Jawaban:
Sejauh menyangkut sistem file, file gdb adalah direktori - mencoba menyalinnya sebagai file tunggal tidak akan berfungsi. Coba ini:
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
tidak akan dapat menyalin file geodatabase konten jika ada .lock
file di sana - Anda akan mendapatkan izin ditolak kesalahan. Alat Copy
GP akan menyalin geodatabase bahkan jika ada kunci di sana (pengguna telah membuka jendela properti kelas fitur atau hanya menavigasi di geodatabase di jendela Katalog)!
Pilihan lain:
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000005100000000
import arcgisscripting
gp = arcgisscripting.create()
gp.Copy_management(r"C:\test.gdb", r"C:\test_COPY.gdb")
arcpy.Copy_management(r"inPath", r"outPath")
untuk metode arcpy (versi 10 sebagai lawan dari 9.3)
saya membuat skrip sederhana untuk menyalin folder geodatabases di-sub. Ini berjalan cukup baik. Semoga ini membantu
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)