Julia 中内置了 处理不同操作系统差异 的功能。 这一部分位于 Julia 核心库 Base
的 Filesystem 模块。
每当需要处理 CSV,Excel 文件或其他 Julia 脚本时,请确保代码能够运行 在不同操作系统的文件系统 上。 这可以通过 joinpath
, @__FILE__
和 pkgdir
函数轻松实现。
当在包中开发代码时,可以使用 获取包的根目录。 例如,对于用来生成本书的 Julia Data Science (JDS) 包:
如上所示,用来生成本书的代码运行在 Linux 电脑上。 在使用脚本时,可以使用如下方式获得脚本文件的路径:
这两条命令的优点是它们与启动 Julia 的方式无关。 换句话说,无论以 julia scripts/script.jl
还是 julia script.jl
方式启动程序,两种方式每次返回的路径都是相同的。
接下来建立从 root
到脚本文件的相对路径。 因为不同的操作系统采用不同的方式组织子文件夹的相对路径(一些采用斜杠 /
,而另一些使用反斜杠 \
),所以不能简单地通过字符串连接组合 路径与文件的相对路径。 因此需要使用 joinpath
函数,它将根据特定的文件系统实现,采用相应的方式连接不同的相对路径和文件名。
joinpath
也能处理 子目录。 接下来考虑一种普遍的情形,项目目录中有一个名为 data/
的子文件夹。 此文件夹中有一个名为 的 CSV 文件。 同样地,此 my_script.jl
文件路径的健壮实现如下所示:
这是一个好习惯,因为它能为你或后来者避免问题。