下面的python代碼獲取一個文件列表並將它們壓縮。我需要的唯一文件地理數據庫(基於文件的數據庫)稱爲「數據」,因此如何修改循環以僅包含基於文件的數據庫(稱爲數據)?更具體地說,文件地理數據庫存儲爲包含存儲和管理空間數據的二進制文件的系統文件夾。所以我需要整個系統文件夾Data.gdb。在Python中更新每個循環
非常感謝
#**********************************************************************
# Description:
# Zips the contents of a folder, file geodatabase or ArcInfo workspace
# containing coverages into a zip file.
# Parameters:
# 0 - Input workspace
# 1 - Output zip file. It is assumed that the caller (such as the
# script tool) added the .zip extension.
#
#**********************************************************************
# Import modules and create the geoprocessor
import sys, zipfile, arcgisscripting, os, traceback
gp = arcgisscripting.create()
# Function for zipping files
def zipws(path, zip):
isdir = os.path.isdir
# Check the contents of the workspace, if it the current
# item is a directory, gets its contents and write them to
# the zip file, otherwise write the current file item to the
# zip file
#
for each in os.listdir(path):
fullname = path + "/" + each
if not isdir(fullname):
# If the workspace is a file geodatabase, avoid writing out lock
# files as they are unnecessary
#
if not each.endswith('.lock'):
# gp.AddMessage("Adding " + each + " ...")
# Write out the file and give it a relative archive path
#
try: zip.write(fullname, each)
except IOError: None # Ignore any errors in writing file
else:
# Branch for sub-directories
#
for eachfile in os.listdir(fullname):
if not isdir(eachfile):
if not each.endswith('.lock'):
# gp.AddMessage("Adding " + eachfile + " ...")
# Write out the file and give it a relative archive path
#
try: zip.write(fullname + "/" + eachfile, \
os.path.basename(fullname) + "/" + eachfile)
except IOError: None # Ignore any errors in writing file
if __name__ == '__main__':
try:
# Get the tool parameter values
#
inworkspace = sys.argv[1]
outfile = sys.argv[2]
# Create the zip file for writing compressed data
#
zip = zipfile.ZipFile(outfile, 'w', zipfile.ZIP_DEFLATED)
zipws(inworkspace, zip)
zip.close()
# Set the output derived parameter value for models
#
gp.setparameterastext(1, outfile)
gp.AddMessage("Zip file created successfully")
except:
# Return any python specific errors as well as any errors from the geoprocessor
#
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + \
str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"
gp.AddError(pymsg)
msgs = "GP ERRORS:\n" + gp.GetMessages(2) + "\n"
gp.AddError(msgs)
沒有,Data.gdb是基於文件的數據庫的名稱,這是我想拉上的唯一文件。我不希望包含在zip文件中的所有其他文件。 – Josh 2010-08-25 20:29:20
如果'Data.gdb'是一個目錄,那麼這應該是這個程序的命令行參數,並且你完成了。無需編程。 – 2010-08-25 21:35:42