I have arcpy scripts to run in arcmap. Last step is "Table to Excel Conversion"
Instead of having the excel file name and location hard-coded I'd like to get the user's input for those.
Your help is greatly appreciated!
# Created on: 2018-08-31 10:42:32.00000
# (generated by ArcGIS/ModelBuilder)
# Import arcpy module
arcpy.env.overwriteOutput = True
# Local variables:
SiteNum_AcreCal = "C:\\...\\scratch\\parcel_Select_SpatialJoin_TableToExcel.xls"
parcel_Select_SpatialJoin_Ta_xls = "C:\\...\\ArcGIS\\parcel_Select_SpatialJoin_Ta.xls"
# Process: Table To Excel
arcpy.TableToExcel_conversion(ParcelSiteNum, SiteNum_AcreCal, "NAME", "CODE")
If the scripts are running within ArcMap, then The pythonaddins module—Help | ArcGIS Desktop offers a straightforward way to address your issue.
UPDATE: The note on the documentation states the module can only be used in Add-ins, but I have used it some with scripts I execute in ArcMap that aren't part of an Addin. I guess I would have to know more specifics about how the code is run before offering more suggestions.
You can also use arcpy.GetParameter and set the parameter type to a File and the direction as Input. This will allow your user to browse to a file on disk. In a service, you can enable the Uploads capability so the browser can browser to the file to upload as well.
import arcpy inFile = arcpy.GetParameter(0) arcpy.AddMessage(inFile)
Input parameter data type set to File
Folder icon opens browser
Path retrieved through variable storing the input parameter:
Thanks Joshua. I was hoping for a more simple approach to my issue. Most of the time I just use model builder and script out to python. The code I put here is just the last step of my workflow not the whole thing so I do not think I'm able to write all that in addin. I've not learned to code in python yet. I tried to use the output parameter but it didn't work.
Try the addins module, it might work for your regardless of the note in the documentation. Worst case, you lose an hour or less trying it out. Another approach is 24. Graphical User Interfaces with Tk — Python 2.7.15 documentation
Tkinter is also an option. For destop 10.6:
import Tkinter, tkFileDialog root = Tkinter.Tk() root.withdraw() file_path = tkFileDialog.askopenfilename() print file_path
Using Joshua's suggestion inside ArcMap (at the bottom of the page he referenced):
import pythonaddins import os class MyValidator(object): def __str__(self): return "Text files(*.txt)" def __call__(self, filename): if os.path.isfile(filename) and filename.lower().endswith(".txt"): return True return False filename = pythonaddins.OpenDialog(r"C:\Path", filter=MyValidator())
Thank you for all your help. I chose the easiest route for me which is using the built in parameters but all suggestions are very helpful. I might try them later.