【问题标题】:Get parent directory of current directory in Ruby获取Ruby中当前目录的父目录
【发布时间】:2012-01-29 10:49:01
【问题描述】:

我知道我可以通过

获取当前目录
$CurrentDir = Dir.pwd

当前目录的父目录呢?

【问题讨论】:

    标签: ruby directory


    【解决方案1】:
    File.expand_path("..", Dir.pwd)
    

    【讨论】:

    • @Niklas:或者File.expand_path('..')default dir_string 就是'.'
    • @muistooshort:很高兴知道:)
    • 上面建议的解决方案不适用于我使用ruby 2.1.5。以下做了... File.dirname(File.expand_path('..', __FILE__))
    【解决方案2】:

    也许是最简单的解决方案:

    puts File.expand_path('../.') 
    

    【讨论】:

    • 为什么不只是File.expand_path('..')
    • @muistooshort 确实很有趣,知道肯定有用,谢谢 ;)
    • 你的回答激起了我检查 File.expand_path 规范的好奇心,非常感谢。
    【解决方案3】:

    我认为更简单的解决方案是使用File.dirname

    2.3.0 :005 > Dir.pwd
     => "/Users/kbennett/temp"
    2.3.0 :006 > File.dirname(Dir.pwd)
     => "/Users/kbennett"
    2.3.0 :007 > File.basename(Dir.pwd)
     => "temp"
    

    File.basename 返回File.dirname 没有的路径组件。

    当然,这仅适用于文件规范是绝对的而不是相对的。为了确保绝对可以做到这一点:

    2.3.0 :008 > File.expand_path('.')
     => "/Users/kbennett/temp"
    2.3.0 :009 > File.dirname(File.expand_path('.'))
     => "/Users/kbennett"
    

    【讨论】:

    • 我的答案在这里有效,但不像其他答案那样富有表现力和清晰。
    【解决方案4】:

    在现代 Ruby 中,您绝对应该使用 Pathname

    Pathname.getwd.parent
    

    【讨论】:

    • 这很整洁。您可能几乎总是需要调用 .to_s 将其转换为字符串(它是路径名)。
    • 根据我的经验,您很少需要 to_s,而是应该在任何地方都使用 Pathname 作为文件名,而不是 String。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2015-08-22
    • 1970-01-01
    • 2013-01-29
    相关资源
    最近更新 更多