【问题标题】:Writing an OS agnostic file path编写与操作系统无关的文件路径
【发布时间】:2018-10-29 00:56:14
【问题描述】:

我发现自己在 Windows 和 OSX 上都使用了一些 R 文件。

在我为此项目创建的几乎所有 R 文件中,都需要从文件系统中导入一些数据。

要以适用于两个操作系统(操作系统?)的方式执行此操作,我在大多数文件的顶部都有这样的内容:

if (Sys.info()['sysname'] == 'Windows'){
    project_path <- "C:/Users/Bilbo/project_folder"
} else { 
    project_path <- "~/project_folder"

最好不要在每个文件中单独实现这一点。一个想法是编写一个返回适当路径的函数get_folder_path(),但问题是我必须使用source() 导入具有该函数的文件,这需要我要求Sys.info()['sysname'],这违背了目的。

写一个只有这个函数的包似乎有点过分(虽然我从来没有用过roxygen,这可能是一个很好的练习)所以我可以做library(agnosticImporter)

有什么好主意吗?

【问题讨论】:

  • 我认为fs 可能会有所帮助(尽管我从未使用过)(在tidyverse 中)-tidyverse.org/articles/2018/01/fs-1.0.0
  • Windows 也为用户主目录提供波浪号扩展。在任何情况下,Sys.getenv("USERPROFILE")Sys.getenv("HOME") 都可能有用。
  • 您在寻找?path.expand吗?试试path.expand(project_path) 看看是不是这样。
  • @CPak 看起来fs 适合在文件系统(跨平台)上进行操作,例如添加和删除文件。但乍一看似乎没有文件路径转换器doohicky。
  • @James "~/project_folder" 在我的 Windows 机器上未被识别为有效路径,但 Sys.getenv("HOME") 可以解决问题。

标签: r windows macos


【解决方案1】:

我对 cme​​ts 没有任何运气,所以我为此目的 wrote a tiny package

来自agnOStic 的函数get_home_dir() 在Windows 上返回“C:\\Users\\Bilbo\\”,在Mac 或Linux 上返回“~/”。

【讨论】:

    猜你喜欢
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2012-06-06
    • 2020-11-26
    • 2013-09-18
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多