Saya tahu pertanyaan ini berumur beberapa bulan, tetapi saya memposting ini kalau-kalau membantu orang lain. Saya mengembangkan kludge ini untuk mem-parsing nomor versi dari dokumen MXD. Ini pada dasarnya membaca 4000 atau lebih karakter pertama dari dokumen MXD dan mencari nomor versi. Saya menguji dengan versi MXD 9.2, 9.3, 10.0, dan 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
Berikut adalah contoh pemindaian folder untuk file mxd dan mencetak versi dan namanya
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
Yang mengembalikan ini:
>>>
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
>>>