Câu trả lời:
Đối với một hệ thống tệp có liên quan, một tệp gdb là một thư mục - cố gắng sao chép một tệp dưới dạng một tệp sẽ không hoạt động. Thử thứ này đi:
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
sẽ không thể sao chép nội dung cơ sở dữ liệu địa lý nếu có bất kỳ .lock
tệp nào ở đó - bạn sẽ nhận được lỗi từ chối cấp phép. Công Copy
cụ GP sẽ sao chép cơ sở dữ liệu địa lý ngay cả khi có khóa ở đó (người dùng đã mở cửa sổ thuộc tính lớp tính năng hoặc chỉ điều hướng trong cơ sở dữ liệu địa lý trong cửa sổ Danh mục)!
Một lựa chọn khác:
http://help.arcgis.com/en/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")
cho phương pháp arcpy (phiên bản 10 trái ngược với 9.3)
tôi đã tạo một tập lệnh đơn giản để sao chép cơ sở dữ liệu địa lý trong các thư mục phụ. Nó chạy khá tốt. Hi vọng điêu nay co ich
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)