如何在ruby中获取未标准化的文件路径?

问题描述 投票:0回答:3

我当前的目录路径是

/a/b/c/
当我这么做的时候

fname = File.path("../test.rb")
::File.absolute_path(fname) 

输出为:

/a/b/test.rb 

我期待的是这样的输出:

/a/b/c/../test.rb 

基本上我需要一个没有标准化的文件路径

../
~

ruby irb working-directory
3个回答
2
投票

您可以通过

File.join
自己构建它:

Dir.pwd
#=> "/a/b/c"

File.join(Dir.pwd, "../test.rb")
#=> "/a/b/c/../test.rb"

请注意,

Dir.pwd
返回当前工作目录。要获取当前文件的目录,请使用
__dir__


0
投票

你可以尝试 File.realpath() 方法吗?例如:

fname = File.realpath("test.rb", __dir__)

这将为您提供带有完整“..”引用的绝对路径。


0
投票

更新:不是OP想要的,请参阅Stefan的评论。

你想要

expand_path

3.0.6 :003 > Dir.pwd
 => "/something/somewhere"
3.0.6 :004 > File.expand_path("../foo")
 => "/something/foo"
3.0.6 :005 >
© www.soinside.com 2019 - 2024. All rights reserved.