sys.path가 제공하는 구분 기호와 os.path.join이 사용하는 구분 기호 사이의 불일치를 해결해야합니다.sys.path와 os.path.join의 혼합 슬래시 해결
필자의 스크립트를 이식 할 수 있도록이 Esri 방법 (Techniques for sharing Python scripts)을 흉내 냈습니다. 그것은 현재 Windows에서 사용되고 있지만 결국 Linux 서버에 살게됩니다. 파이썬이 적절한 슬래시를 결정하도록해야합니다.
는 그들이 제안하는 무엇 :
# Get the pathname to this script
scriptPath = sys.path[0]
# Get the pathname to the ToolShare folder
toolSharePath = os.path.dirname(scriptPath)
# Now construct pathname to the ToolData folder
toolDataPath = os.path.join(toolSharePath, "ToolData")
print "ToolData folder: " + toolDataPath
하지만이 ToolData folder: C:/gis\ToolData
를 출력 - 분명히 혼합 슬래시가 작동하지 않을 수 있습니다.
이
는os.path.join
에 넣어 전에 외부 입력 (당신은 분명히의 형식을 제어하지 않는 입력) 확인 :이 질문 (mixed slashes with os.path.join on windows)는 솔루션에 대한 기본적인 접근 방식을 포함합니다. 이 방법을 사용하면
os.path.join
이 나쁜 입력을 기반으로 나쁜 결정을하지 않음을 확인하십시오.
그러나 크로스 플랫폼에서 작동하는지 확실하지 않습니다. 을 sys.path[0]
결과에 사용하면 Windows 용으로 좋지만 Unix로 전환하면 동일한 혼합 슬래시 문제가 발생하지 않습니다.
'pathlib '옵션이 있습니까? 이것은 Python 3.4에서 새로 추가되었으며 Python 2.7에서는 존재하지 않습니다. – chepner
내가 사용하는 ArcPy 함수가 많기 때문에 파이썬 2.7에 머물렀다. (그리고/또는 우리는 서버에 2.7을 가지고있다.) – Erica
파이썬은 Windows 경로에 슬래시를 사용할 수 있으므로'sys.path [0] .replace (r '\', '/')'는 플랫폼 간 기능에 가장 적합 할 수 있습니다. – chepner