Ruby中如何获取未进行规范化处理的文件路径?
获取保留
../和~的未规范化绝对路径 当前目录为/a/b/c/时,执行File.absolute_path("../test.rb")会自动规范化路径,得到/a/b/test.rb,但如果需要保留../这类符号,生成/a/b/c/../test.rb这样的未规范化路径,可以用以下方法:
直接拼接当前目录与相对路径:
借助Dir.pwd获取当前工作目录,再用File.join拼接相对路径,避免触发路径规范化:fname = "../test.rb" unnormalized_abs_path = File.join(Dir.pwd, fname) # 输出结果:/a/b/c/../test.rb处理带
~的路径:
如果要保留~符号,直接拼接即可;只要不使用Ruby自带的路径规范化方法,就能完整保留符号:fname = "~/../test.rb" unnormalized_abs_path = File.join(Dir.pwd, fname) # 输出结果:/a/b/c/~/../test.rb
注意:Ruby的File.absolute_path、File.realpath等方法会自动解析../、./、~这类路径符号并规范化,因此要保留符号就不能使用这类方法,直接通过字符串拼接构造路径即可。
内容的提问来源于stack exchange,提问作者Prateek Sen
相关产品推荐
相关产品推荐

