You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:12:35