打开用户主目录中的文件



我在使用Core.In_channel库时遇到了一个奇怪的问题。这是一段代码,用于在用户的主目录中打开文件

open Core.Std
In_channel.with_file "~/.todo_list" ~f:(fun in_c ->
  (* Do something here... *)
)

但是,在运行它时,这是我得到的:

Exception: (Sys_error "~/.todo_list: No such file or directory").

我绝对确定~/.todo_list存在,但我怀疑文件名被OCaml误解了。

我在这里错过了什么?

正如其他人所说,~的扩展是由 shell 完成的,而不是由底层系统完成的。调用 with_file 时不涉及 shell,因此字符串按字面解释为文件名。

如果代码代表已登录的用户运行,则主目录可用作环境变量 HOME 的值。

# Unix.getenv "HOME";;
- : string = "/Users/username"

否则,您将需要从用户数据库中提取主目录。

# let open Unix in (getpwnam "username").pw_dir;;
- : string = "/Users/username"

相关内容

  • 没有找到相关文章

最新更新