创build目录如果它不存在与Ruby
我想用下面的代码创build一个目录:
Dir.mkdir("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test") unless File.exists?("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test") 
但是,我收到此错误:
没有这样的文件或目录 – / Users / Luigi / Desktop / Survey_Final / Archived / Survey / test(Errno :: ENOENT)
 为什么这个目录不是由上面的Dir.mkdir语句创build的? 
 您可能正尝试创build嵌套的目录。 假设foo不存在,您将不会收到no such file or directory错误: 
 Dir.mkdir 'foo/bar' # => Errno::ENOENT: No such file or directory - 'foo/bar' 
 要一次创build嵌套目录,需要FileUtils : 
 require 'fileutils' FileUtils::mkdir_p 'foo/bar' # => ["foo/bar"] 
 编辑2:你不必使用FileUtils ,你可以做系统调用(从@mu更新太短评论): 
 > system 'mkdir', '-p', 'foo/bar' # worse version: system 'mkdir -p "foo/bar"' => true 
 但是,对于使用外部“工具”(在某些系统中可能无法使用),似乎(至less对我来说)是更糟糕的方法(虽然我几乎无法想象系统没有mkdir ,但是谁知道)。 
简单的方法:
 directory_name = "name" Dir.mkdir(directory_name) unless File.exists?(directory_name) 
另一种简单的方法
 Dir.mkdir('tmp/excel') unless Dir.exist?('tmp/excel') 
 如果Dir.mkdir('dir') rescue nil ?