Datei Geodatabase mit Python kopieren?


8

Ich versuche, fgdb mit Python von einem Pfad in einen anderen zu kopieren.

copy(base.gdb,dest)

Und bekam die Nachricht:

Error Info: 
[Errno 13] Permission denied:

Wie man es repariert?

Antworten:


25

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

Ja. das ist es. Copytree funktioniert, nur Copy nicht. Tnx :)
Z77

2
Es ist wichtig zu beachten, dass copytreeder Inhalt der Geodatabase-Datei nicht kopiert werden kann, wenn sich dort .lockDateien befinden. Es wird ein Fehler angezeigt, bei dem die Berechtigung verweigert wurde. Das CopyGP-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)!
Alex Tereshenkov

12

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

3
arcpy.Copy_management(r"inPath", r"outPath")für die Arcpy-Methode (Version 10 im Gegensatz zu 9.3)
Roy

Hinweis: Wenn Sie über ein Netzwerk arbeiten, ist dieser Vorgang sehr zweifelhaft. Es wird entweder nicht funktionieren, funktionieren, aber einen 000260-Fehler melden, oder wenn Ihr Glück ohne Fehler funktioniert.
Tristan Forward

5

Stellen Sie sicher, dass die Person, die das Python-Skript ausführt, berechtigt ist, zusätzliche Ordner in dem Verzeichnis zu erstellen, in dem das Skript ausgeführt wird.

Auf welcher Art von System führen Sie das Skript aus? Wo im PATH versuchen Sie, das Skript auszuführen?


1

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)

0

Pls. Berücksichtigen Sie dies in Ihrem Python-Code. (versuchen Sie diesen Fehler zu erfassen)

Während Sie die fGDB manuell in einen anderen Ordner kopieren, pls. Stellen Sie sicher, dass Sie die fGDB in arcmap nicht geöffnet haben. Es wird eine Fehlerdatei "* .lock" ausgegeben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.