如果目录不存在如何创建目录?

How to create directory if it doesn't exist?

如果我想将文件写入 C:/output/results.csv 如果目录不存在,创建目录的简单方法是什么?我想这样做是因为 CSV.write(path,data) 如果 C:/output/ 不存在就会出错。

mkdir 如果目录已经存在则出错。我目前正在执行以下操作,但是有 safer/cleaner 方法可以做到这一点吗?

try 
    mkdir("C:/output")
catch
    # if errors, likely already exists
end

编辑: 正如其中一位评论者所指出的,mkpath 将创建一个目录(如果它不存在),并且在任何一种情况下都将 return 目录名称。

我的问题是混淆了 mkdir 的用法(如果目录存在则出错)和 mkpath 在这种情况下不会出错。

您可以使用 isdir:

明确检查目录是否存在
isdir(dir) || mkdir(dir)
CSV.write(joinpath(dir, "results.csv"), data)

但这不一定能处理所有极端情况,例如当路径已经存在但 link 到另一个目录时。标准库中的 mkpath 函数应该可以为您处理所有事情:

mkpath(path)
CSV.write(joinpath(path, "results.csv"), data)
如果目录不存在,

mkpath(oath) 将创建一个目录,然后 return path 会创建一个目录。如果已经存在,则路径为 returned.