繁体   English   中英

创建目录(如果Ruby不存在)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM