我正在尝试编写一个脚本,根据指定目录是否存在自动检出或更新Subversion URL。
出于某种原因,我的代码无法正常工作,并且始终返回true,即使它是false:
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
我做错了什么?
File.directory?
或 Dir.exist?
。这将仅在文件存在且为目录时返回 true。def directory_exists?(directory)
File.directory?(directory)
end
请注意,在当前情况下不需要使用一种方法。
其他回答都是正确的,但是如果你尝试在用户的主目录中检查目录,可能会遇到问题。确保在检查之前扩展相对路径:
File.exists? '~/exists'
=> false
File.directory? '~/exists'
=> false
File.exists? File.expand_path('~/exists')
=> true
File.exist?("directory")
Dir[]
返回一个数组,因此它永远不会是 nil
。如果你想要按照自己的方式做,可以这样做:
Dir["directory"].empty?
如果找不到,将返回true
。
Kernel#test
方法:test ?d, 'some directory'
IT技术起源于https://ss64.com/bash/test.html。你会注意到Bash test
有一个标志-d
,用于测试目录是否存在。-d file 如果file是一个目录,则为True。[[ -d demofile ]]
Dir.exists?
是否比File.directory?
更加简洁明了? - Yo LudkeDir.exists?
已经被弃用,请使用Dir.exist
。 - fkoesslerDir.exist?
。 - fkoessler