मुझे पता है कि यह सवाल कुछ महीने पुराना है, लेकिन मैं इस मामले में पोस्ट कर रहा हूं क्योंकि यह दूसरों की मदद करता है। मैंने एमएक्सडी दस्तावेजों से संस्करण संख्याओं को पार्स करने के लिए इस कीचड़ को विकसित किया। यह मूल रूप से एमएक्सडी दस्तावेज़ के पहले 4000 या तो पात्रों को पढ़ता है और एक संस्करण संख्या के लिए खोज करता है। मैंने एमएक्सडी संस्करण 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
>>>