I have written a python script to export my mxd into a pdf (not using data driven pages). I am getting the error that my mxd path is incorrect! I have included my script below. Any help would be appreciated.
# Necessary modules
import arcpy, os, string, sys
# For less complicated scripts -
# these 2 imports are necessary to utilize a simpler method of debugging outher than traceback
import win32ui, win32con
# example debug message to screen ......
# arcpy.AddMessage("mxd_file = " + str(mxd_file))
# val = win32ui.MessageBox("mxd_file = " + str(mxd_file), "title",
#win32con.MB_OKCANCEL)
#Paramaters...
mxdList = string.split(arcpy.GetParameterAsText(0), ";")
dir = arcpy.GetParameterAsText(1)
#Loop thru & take the base name of each MXD selected and append all map pages to a single pdf
# and save to chosen directory......
for mxdPath in mxdList:
mxd = arcpy.mapping.MapDocument(mxdPath)
name = mxdPath[:-4] + ".pdf"
file = dir + os.sep + os.path.basename(name)
ddp = mxd
ddp.exportToPDF(file, "ALL")
del mxd, file
Best Answer
I think the comments have addressed your immediate issue, but here are just a few suggestions for writing cleaner, more "Pythonic" code:
file
anddir
are examples of these.name
is not, but it's pretty generic. Try to use descriptive identifiers, not only to avoid naming conflicts, but to help yourself and others better understand your code.Take advantage of the standard library (and check out Doug Hellman's PyMOTW site for a whirlwind tour). For example, you could use the functions in the
os.path
module (see also the PyMOTW article on it) to make your path manipulations more robust and clear to other Python programmers.Instead of:
Use
os.path.splitext
,os.extsep
and the built-injoin
method for string objects (might as well doos.path.basename
here as well):Instead of:
Use
os.path.join
:(moved
os.path.basename
to previous line and changed your variable names as well)