我是Python的初学者,所以这个问题真是令人生畏。我正在使用ArcGIS 10.2和Python 2.7
我有大约3,000个zip文件(Winzip),每个文件包含四个描述不同矢量特征的shapefile。这些shapefile在每个zip文件中具有相同的四个相同名称。它们本质上是一个时间序列,将相同的四个数据集分解为各个日期。
zip文件的名称在我需要检索的名称中间的某处包含一个字符串,并包含在提取的shapefile的名称中。
然后我需要根据类型将每个重命名的shapefile移动到不同的目录。
例如:
usdm_20001001.zip (I need the 20001001 from the title)
|--DI_Callout.shp (needs to be renamed C20001001 and moved to a directory = Callout)
|--DI_Type.shp (needs to be renamed T20001001 and moved to a directory = Type)
|--file three
|--file four
等等,3000次。
答案 0 :(得分:3)
Python有一个Zip interface。我已经整理了一个包含您需要的所有部分的小脚本,但您需要使用名称和路径进行查找或转换;您的问题中没有足够的信息来决定名称,我无法关注您的文件夹结构。
import sys, os, zipfile
InFolder = sys.argv[1]
for Zfile in os.listdir(InFolder + "\*.zip"):
# Open the archive
Archive = zipfile.ZipFile(InFolder + "\\" + Zfile)
# get the base name (no extension) and split it
# to exract the ID.
Zname, Zext = os.splitext(Zfile)
Zsplit = Zname.split("_")
BaseName = "C%s" % Zsplit[1]
ZDir = InFolder + "\\" + BaseName
# If the folder doesn't exist create it
if not os.path.exists(ZDir):
os.mkdir(ZDir)
# setp through each file in the archive
# extracting each one as you go.
for member in Archive.infolist():
InName, InExt = os.splitext(member.filename)
# Not sure about naming here, you will need to do
# some string manipulation
OutFileName = "NotSure" + InExt
# not sure about extract with a diffent name
# so extract and rename
Archive.extract(member,ZDir)
os.rename(ZDir + "\\" + member.filename, ZDir + "\\" + OutFileName)
所有的部分都在那里:分裂字符串,使用zip文件,测试&创建文件夹,重命名文件和从扩展名中拆分文件名。以此为基础,您应该顺利完成。