ฉันรู้ว่าคำถามนี้อายุไม่กี่เดือน แต่ฉันโพสต์นี้ในกรณีที่มันช่วยคนอื่น ฉันพัฒนา kludge นี้เพื่อแยกวิเคราะห์หมายเลขรุ่นจากเอกสาร MXD โดยทั่วไปจะอ่านอักขระ 4000 ตัวแรกหรือมากกว่านั้นของเอกสาร MXD และค้นหาหมายเลขเวอร์ชัน ฉันทดสอบด้วย MXD รุ่น 9.2, 9.3, 10.0 และ 10.1
import re
def getMXDVersion(mxdFile):
matchPattern = re.compile("9.2|9.3|10.0|10.1|10.2")
with open(mxdFile, 'rb') as mxd:
fileContents = mxd.read().decode('latin1')[1000:4500]
removedChars = [x for x in fileContents if x not in [u'\xff',u'\x00',u'\x01',u'\t']]
joinedChars = ''.join(removedChars)
regexMatch = re.findall(matchPattern, joinedChars)
if len(regexMatch) > 0:
version = regexMatch[0]
return version
else:
return 'version could not be determined for ' + mxdFile
นี่คือตัวอย่างของการสแกนโฟลเดอร์สำหรับไฟล์ mxd และพิมพ์รุ่นและชื่อ
import os
import glob
folder = r'C:\Users\Administrator\Desktop\mxd_examples'
mxdFiles = glob.glob(os.path.join(folder, '*.mxd'))
for mxdFile in mxdFiles:
fileName = os.path.basename(mxdFile)
version = getMXDVersion(mxdFile)
print version, fileName
ซึ่งส่งคืนสิ่งนี้:
>>>
10.0 Arch_Cape_DRG.mxd
9.2 class_exercise.mxd
9.3 colored_relief2.mxd
10.1 CountyIcons.mxd
10.0 DEM_Template.mxd
9.2 ex_2.mxd
10.0 nairobimap.mxd
10.0 slope_script_example.mxd
10.1 TrailMapTemplateBetter.mxd
10.0 Wickiup_Mountain_DEM.mxd
>>>