![](/img/trans.png)
[英]rbenv doesn't have the ruby version and the ruby-build plugs directory doesn't exist, what to do?
[英]Create Directory if it doesn't exist with Ruby
我正在尝试使用以下代码创建一个目录:
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
语句创建的?
您可能正在尝试创建嵌套目录。 假设foo
不存在,您将不会收到no such file or directory
错误:
Dir.mkdir 'foo/bar'
# => Errno::ENOENT: No such file or directory - 'foo/bar'
要一次创建嵌套目录,需要FileUtils
:
require 'fileutils'
FileUtils.mkdir_p 'foo/bar'
# => ["foo/bar"]
Edit2:你不必使用FileUtils
,你可以进行系统调用(从@mu更新是太短的评论):
> system 'mkdir', '-p', 'foo/bar' # worse version: system 'mkdir -p "foo/bar"'
=> true
但这似乎(至少在我看来)是一种更糟糕的方法,因为你使用的外部“工具”在某些系统上可能无法使用(尽管我很难想象没有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
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.