Suite

Récupérer la taille du fichier de formes dans ArcPy ?

Récupérer la taille du fichier de formes dans ArcPy ?


Est-il possible de récupérer la taille d'un shapefile en utilisant python et arcpy ? Si c'est le cas, comment?


Parcourez tous les fichiers du répertoire shapefile avec une extension de shapefile valide et additionnez leurs tailles. Lesystème d'exploitationmodule est utile pour cette tâche. Voici une fonction qui renvoie la taille de tous les fichiers de fichiers de formes associés à un fichier de formes d'entrée en octets. Utilisez le chemin complet du fichier de formes comme entrée.

import os def ShpSize (inShp): #standardize inShp = inShp.lower () #shapefile extensions extensions = [".shp", ".shx", ".dbf", ".sbn", ".sbx", " .fbn", ".fbx", ".ain", ".aih", ".atx", ".ixs", ".mxs", ".prj", ".xml", ".cpg"] # nom du fichier de forme sans répertoire shpName = os.path.basename (inShp) #nom du fichier de forme sans extension .shp shpFlName = os.path.splitext(shpName)[0] #taille définie sur zéro taille = 0 #répertoire du fichier de formes shpDir = os.path.dirname (inShp) # itérer les fichiers de répertoire pour fl dans os.listdir (shpDir): #standardize fl minuscule = fl.lower () #ignorer les noms de fichiers qui ne correspondent pas au shapefile flName = os.path.splitext( fl)[0] sinon flName == shpFlName : #cas spécial : fichier .shp.xml sinon fl == shpFlName + ".shp.xml": continue #ignorer les noms de fichiers sans extension appropriée ext = os.path.splitext (fl)[1] sinon ext dans les extensions : continuez #get size flFullPath = os.path.join (shpDir, fl) size += os.path.getsize (flFullPath) return size

Vous pouvez utiliser une expression génératrice pour trouver efficacement la taille du fichier de formes (c'est-à-dire y compris tous les fichiers associés). La méthode suivante utilise la fonctionnalité Python 2.7 intégrée.

import os, glob ws = r'C:path	oyourshapefiles' # input workspace shapefiles = glob.glob(os.path.join(ws, "*.shp")) # Lister tous les fichiers .shp pour shapefile dans shapefiles : s = sum([os.stat(x).st_size for x in glob.glob(shapefile.split(".")[0] + "*")]) print "La taille du fichier pour %s est %s octets ou %s ko" % (shapefile, s, (float(s)/1000))

L'expression du générateur effectue les opérations suivantes :

  1. Répertoriez tous les fichiers associés d'un shapefile. Dans ce cas, supprimez l'extension ".shp" du chemin et utilisezglobeavec le chemin et le joker*pour lister tous les fichiers associés
  2. Obtenez les tailles de fichiers en octets en utilisantos.stat
  3. Additionnez-les à l'aide du générateursomme([… ]).

Voir la vidéo: 18 - Import Shapefile into File Geodatabases with Arcpy - ArcGIS Pro Scripting with Python and Arcpy