Hi Folks,
In ArcGIS Pro 2.4.0, I noticed some unexpected behavior with forward slashes in data paths with code run in the Python console embedded in Pro.
In short, if backslashes are used, the code works:
d = "C:\gispy\data\ch02\park.shp"
proj = arcpy.mp.ArcGISProject("CURRENT")
m = proj.listMaps()[0]
m.addDataFromPath(d)
<arcpy._mp.Layer object at 0x00000287876AE7F0>
# Hurray! Data added to map.
But if forward slashes are used in the data path, it throws a RuntimError and fails to add data to the map:
d2 = "C:/gispy/data/ch02/park.shp"
m.addDataFromPath(d2)
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\program files\arcgis\pro\Resources\arcpy\arcpy\_mp.py", line 1531, in addDataFromPath
return convertArcObjectToPythonObject(self._arc_object.addDataFromPath(*gp_fixargs((data_path,), True)))
RuntimeError
I could not find a bug report on this. Are there plans to address this or is this intentional behavior? If so, why?
If it was found it is several versions old and a backport won't be provided. You could update to a newer version of arcgis pro to be safe.
If you want, you can go through the release notes for prior versions to see if it was reported as a bug and fixed.
Release notes for ArcGIS Pro 2.6—ArcGIS Pro | Documentation
The path with forward slashes is python valid, however, to play it safe with back slash paths, always use raw encoding
good = r"C:\temp\data\ch02\park.shp" # ---- a little `r` goes a long way
bad = "C:\temp\data\ch02\park.shp" # ---- no `r`
# ---- test prints
print(good)
C:\temp\data\ch02\park.shp
print(bad)
C: emp\data\ch02\park.shp # ---- a tab inserted
# ---- abject total failure
ugly = "C:\temp\data\ch02\x.shp"
File "<ipython-input-11-6fa7135b60c0>", line 1
ugly = "C:\temp\data\ch02\x.shp"
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 17-18: truncated \xXX escape
Hi Dan, Great to hear from you. Somehow, I always encounter you when researching arcpy issues online. I feel like I know you. 🙂 Yes, I'm familiar with the raw string approach and the perils of escape sequences. This is why I found it even more frustrating that Pro is not handling forward slashes correctly.
NIM000967: Geoprocessing tools do not recognize a layer name wi.. (esri.com) but you weren't using geoprocessing tools
Good find! Probably the same underlying issue though.
This begs a few questions...This was submitted 14 years ago and the status is "Not in Current Product Plan"? What could this mean? Maybe a new bug report needs to be submitted. Can any old shmo create a bug report? Were they really working on ArcGIS Pro in 2006? Forward slashes have never been a problem before in Desktop, why start now?
Laura....
I think any shmo can... however, I have never had any problem with forward slashes.
My default is "raw" encoding (using the little 'r' in scripts).
In geoprocessing tools, I don't type... I navigate and select files and let arc* wizardry do its work.
I would investigate further and see whether other paths fail with forward slashes. I am wondering if it just may be that particular folder, or something in the mp module (which I rarely use).
Give it shot and if it is reproduceable, then file a report ... however, the first thing that will be suggested is to upgrade to the latest version (2.6.3)
Good luck!
For the record, they solved this problem in later versions of ArcGIS Pro. I just tested the same forward slash example in 2.8 and it works.
d2 = "C:/gispy/data/ch02/park.shp"
proj = arcpy.mp.ArcGISProject("CURRENT")
m = proj.listMaps()[0]
m.addDataFromPath(d2)