Трябва да разреша несъответствието между разделителя, който sys.path предоставя, и разделителя, който os.path.join използва.
Имитирах този метод на Esri (Техники за споделяне на Python скриптове), за да направя моя скрипт преносим. Засега се използва в Windows, но в крайна сметка ще живее на Linux сървър; Трябва да позволя на Python да определи подходящата наклонена черта.
Какво предлагат:
# 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 на прозорци) включва основния подход към решение:
проверете външния си вход (входа, чийто формат очевидно не контролирате), преди да го поставите в
os.path.join
. По този начин се уверявате, чеos.path.join
не взема лоши решения въз основа на евентуално лош вход
Въпреки това не съм сигурен как да гарантирам, че ще работи на различни платформи. Ако използвам .replace("/","\\")
за резултата sys.path[0]
, това е страхотно за Windows, но няма ли това да причини същия проблем със смесени наклонени черти, след като премина към Unix?
pathlib
опция ли е? Това е ново в Python 3.4 и не съществува в Python 2.7. - person chepner   schedule 03.09.2014sys.path[0].replace(r'\', '/')
може да е най-добрият вариант за междуплатформена функционалност. - person chepner   schedule 03.09.2014