在 Julia 中返回当前目录上方的一个文件夹

Jos*_*ath 4 directory julia

在 Julia 中,我可以从

@__DIR__
Run Code Online (Sandbox Code Playgroud)

例如,当我在“当前”文件夹中运行上述内容时,它给了我

"/Users/jtheath/Dropbox/Research/Projects/Coding/Current"
Run Code Online (Sandbox Code Playgroud)

但是,我希望它返回当前文件夹上方的一个文件夹;IE,

"/Users/jtheath/Dropbox/Research/Projects/Coding"
Run Code Online (Sandbox Code Playgroud)

在 Julia 脚本中是否有一种简单的方法可以做到这一点?

ffe*_*tte 7

首先,请注意,@__DIR__通常会扩展到当前源文件的目录(但是,如果不涉及源文件,例如从 REPL 运行时,它会返回当前工作目录)。为了可靠地获取当前工作目录,您应该使用pwd().

现在你真正的问题是:我认为获取父目录路径的最简单方法是简单地使用dirname

julia> dirname("/Users/jtheath/Dropbox/Research/Projects/Coding/Current")
"/Users/jtheath/Dropbox/Research/Projects/Coding"
Run Code Online (Sandbox Code Playgroud)

请注意,AFAIU 仅使用字符串操作,并不关心所涉及的路径是否实际存在于文件系统中(这就是为什么上面的示例适用于我的系统,尽管我没有与您相同的文件系统结构)。dirname对尾随斜杠的存在/不存在也相对敏感(如果您向它提供直接来自pwd()or 的东西,这应该不是问题@__DIR__)。

我有时也会使用这样的东西,希望当我想使用文件系统中实际存在的路径时它可能更健壮:

julia> curdir = pwd()
"/home/francois"

julia> abspath(joinpath(curdir, ".."))
"/home/"
Run Code Online (Sandbox Code Playgroud)