이 질문은 몇 달 전이지만 다른 사람들에게 도움이 될 수 있도록 게시하고 있습니다. MXD 문서에서 버전 번호를 구문 분석하기 위해이 kludge를 개발했습니다. 기본적으로 MXD 문서의 첫 4000 자 정도 문자를 읽고 버전 번호를 검색합니다. 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
>>>