回答:
ファイルシステムに関する限り、ファイルgdbはディレクトリです。単一のファイルとしてコピーしようとしても機能しません。これを試してください:
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
ファイルジオデータベースの内容がそこにある場合、ファイルジオデータベースの内容をコピーできないことに注意してください.lock
-権限拒否エラーが発生します。Copy
GPツールはロックがある場合でも、ジオデータベースをコピーしますが(ユーザーがカタログウィンドウでジオデータベース内だけでナビゲートフィーチャクラスのプロパティウィンドウまたはを開いています)!
別のオプション:
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")
arcpyメソッドの場合(9.3ではなくバージョン10)
ジオデータベースをサブフォルダーにコピーする簡単なスクリプトを作成しました。お役に立てれば
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)