joinpath
等函数在连接两个路径时使用相应的依赖于操作系统的分隔符(例如Linux上为/
,Windows上为\\
等)。这些函数如何知道要使用哪个分隔符?
同样,Linux上的根目录是/
,但在Windows上可能是C:\\
。有没有办法在Julia中检索依赖于操作系统的根目录?
注意,我已经查看了joinpath
source on github,它似乎使用了未记录的函数pathsep(a,b)
和全局变量path_separator_re
,但是我无法看到其中任何一种是如何工作的。
答案 0 :(得分:1)
它使用Sys.isunix
和Sys.iswindows
函数来有条件地定义正确的path_separator_re
变量等。
if Sys.isunix()
# ...
const path_separator_re = r"/+"
# ...
splitdrive(path::String) = ("",path)
elseif Sys.iswindows()
# ...
const path_separator_re = r"[/\\]+"
# ...
function splitdrive(path::String)
m = match(r"^([^\\]+:|\\\\[^\\]+\\[^\\]+|\\\\\?\\UNC\\[^\\]+\\[^\\]+|\\\\\?\\[^\\]+:|)(.*)$", path)
String(m.captures[1]), String(m.captures[2])
end
else
error("path primitives for this OS need to be defined")
end
对于根目录,请查看homedir
函数,该函数使用libuv
来确定它。
帮助&GT?;主目录 搜索:homedir
homedir() -> AbstractString
返回当前用户的主目录。|注意 | | homedir通过
libuv
' suv_os_homedir
确定主目录。有关详细信息(例如,如何指定主页 |目录通过环境变量),参见uv_os_homedir
文档。