Julia包数据文件和绝对/相对路径

时间:2016-03-24 15:12:55

标签: julia

我正在Julia中创建一个包,并且已经关注了文档的Package Development部分。

我的一个函数打开并读入我存储在包目录中的数据文件(mydata.txt)。

当我从包目录运行Julia时,一切都很好,但是当我运行测试或从不同的目录运行Julia时不是很好,因为它不知道在哪里找到该数据文件。

我以为我可以这样做:

datapath = Pkg.dir("MyPkg") * "/data/"

获取文件的绝对路径,但它似乎仍无效。

为包中的数据提供绝对文件路径的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

为了正确处理多平台目录文件和路径,请使用Julia的内置joinpath方法:

joinpath(Pkg.dir("MyPkg"), "data", "mydata.txt")

生成的路径在每个平台都有效。

答案 1 :(得分:1)

从Julia 1.0开始,Imano Luengo的回答将产生警告:

  

警告:Pkg.dir(pkgname, paths...)已过时;而是import PackageName; joinpath(dirname(pathof(PackageName)), "..", paths...)

因此,尽管它仍然可以工作,但它将在以后的版本中停止工作。消息中建议的替换,

joinpath(dirname(pathof(MyPkg)), "..", "data")

(无需导入,因为我们位于包装内)似乎可以正常工作。