ruby – File.dirname令人困惑的行为
发布时间:2020-12-17 03:54:56 所属栏目:百科 来源:网络整理
导读:我使用 Ruby 1.9.3编写了几个用于系统管理的小Ruby脚本.在一个脚本中我使用: File.dirname(__FILE__) 获取脚本文件的目录.这将返回一个相对路径,但是当我从第二个脚本调用脚本时,File.dirname返回一个绝对路径. Ruby Doc在其示例中列出了绝对返回路径,而我
我使用
Ruby 1.9.3编写了几个用于系统管理的小Ruby脚本.在一个脚本中我使用:
File.dirname(__FILE__) 获取脚本文件的目录.这将返回一个相对路径,但是当我从第二个脚本调用脚本时,File.dirname返回一个绝对路径. Ruby Doc在其示例中列出了绝对返回路径,而我在Ruby Forum上发现了一个讨论,其中用户说dirname应该只返回相对路径. 我使用Ruby Forums建议的解决方案来使用File.expand_path来始终获得如下的绝对路径: File.expand_path(File.dirname(__FILE__)) 但是有没有办法让dirname的行为保持一致? 更新: 为了扩展Janathan Cairs的答案,我制作了两个脚本: s1.rb: puts "External script __FILE__: #{File.dirname(__FILE__)}" s0.rb: puts "Local script __FILE__: #{File.dirname(__FILE__)}" require './s1.rb' 运行./s0.rb会给出以下输出: Local script __FILE__: . External script __FILE__: /home/kenneth/Pictures/wp/rip_vault 解决方法
如果给定绝对路径,File.dirname应返回绝对路径,如果给定相对路径,则返回相对路径:
File.dirname('/home/jon/test.rb') # => '/home/jon' File.dirname('test.rb') # => '.' __FILE__返回当前脚本的名称,因此它是当前目录的相对路径.这意味着如果要使用File.dirname(__ FILE__)获取绝对路径,则应始终使用expand_path. NB Ruby 2.0.0 introduces the (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |