Pythonを使用してファイルジオデータベースをコピーしますか?


8

Pythonを使用してfgdbをあるパスから別のパスにコピーしようとしています。

copy(base.gdb,dest)

そしてメッセージを得た:

Error Info: 
[Errno 13] Permission denied:

それを修正するには?

回答:


25

ファイルシステムに関する限り、ファイル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は機能しますが、copyは機能しません。Tnx :)
Z77

2
copytreeファイルジオデータベースの内容がそこにある場合、ファイルジオデータベースの内容をコピーできないことに注意してください.lock-権限拒否エラーが発生します。CopyGPツールはロックがある場合でも、ジオデータベースをコピーしますが(ユーザーがカタログウィンドウでジオデータベース内だけでナビゲートフィーチャクラスのプロパティウィンドウまたはを開いています)!
Alex Tereshenkov 16年

12

別のオプション:

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")

3
arcpy.Copy_management(r"inPath", r"outPath")arcpyメソッドの場合(9.3ではなくバージョン10)
Roy

注:ネットワークを介して作業する場合、この操作は非常に危険です。動作せず、動作しますが、000260エラーを報告するか、幸運なことにエラーなしで動作します。
トリスタンフォワード

5

Pythonスクリプトを実行している人に、スクリプトの実行元のディレクトリに追加のフォルダを作成する権限があることを確認してください。

どのタイプのシステムでスクリプトを実行していますか?PATHのどこからスクリプトを実行しようとしていますか?


1

ジオデータベースをサブフォルダーにコピーする簡単なスクリプトを作成しました。お役に立てれば

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)

0

Pls。あなたのpythonコードでこれを考慮してください。(このエラーをキャプチャしてみてください)

fGDBを別のフォルダに手動でコピーしているときに、pls。arcmapでfGDBを開いていないことを確認してください。エラー「* .lock」ファイルがスローされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.