This post shows how to find the version number of an ArcGIS map document (.mxd) programmatically using Python. It seems that arcpy does not provide a method to do this itself.
ArcGIS map documents are actually Microsoft OLE2 files (also called Structured Storage, Compound File Binary Format or Compound Document File Format). There is a Python module called oletools which can read this format, which is available on PyPI.
To install oletools using pip (from a command prompt):
pip install oletoolsThe following Python function takes a filename and returns the document version number as a string (e.g. '10.3'):
from oletools.thirdparty import olefile
def mxd_version(filename):
assert(olefile.isOleFile(filename))
ofile = olefile.OleFileIO(filename)
stream = ofile.openstream('Version')
data = stream.read().decode('utf-16')
version = data.split('\x00')[1]
return versionIt is possible to access other information about the map document in this way, although most of the data remains in an undocumented proprietary format and is not readable. The oletools module includes a graphical browser for data in OLE2 files called olebrowse.py (documentation).
This post is based on my answer to a question on GIS.SE.