即使文件存在,以下操作也会以Errno::ENOENT: No such file or directory
失败:
open('~/some_file')
然而,我可以做到:
open(File.expand_path('~/some_file'))
我有两个问题:
- 为什么
open
不将波浪线处理为指向主目录? - 有比
File.expand_path
更好的方法吗?
即使文件存在,以下操作也会以Errno::ENOENT: No such file or directory
失败:
open('~/some_file')
然而,我可以做到:
open(File.expand_path('~/some_file'))
我有两个问题:
open
不将波浪线处理为指向主目录?File.expand_path
更好的方法吗?$HOME
只是一种惯例;事实上,如果你看一下File.expand_path
的文档,它正确地解释了tilde,但它是函数本身的一个特性,而不是底层系统固有的东西;要正确设置环境变量File.expand_path
.这给我们带来了可能的 Select ...试试这个:
open(ENV['HOME']+'/some_file')
我希望它足够光滑.我个人认为使用环境变量比使用expand_path
在语义上更清晰.