首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果Ruby中不存在目录,则创建目录

如果Ruby中不存在目录,则创建目录
EN

Stack Overflow用户
提问于 2013-10-10 02:57:16
回答 4查看 128.1K关注 0票数 172

我正在尝试使用以下代码创建一个目录:

代码语言:javascript
复制
Dir.mkdir("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")
    unless File.exists?("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")  

但是,我收到了这个错误:

Errno::ENOENT没有这样的文件或目录- /Users/Luigi/Desktop/Survey_Final/Archived/Survey/test (

::ENOENT)

为什么上面的Dir.mkdir语句没有创建这个目录?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-10 03:08:24

您可能正在尝试创建嵌套目录。假设foo不存在,您将收到以下no such file or directory错误:

代码语言:javascript
复制
Dir.mkdir 'foo/bar'
# => Errno::ENOENT: No such file or directory - 'foo/bar'

要一次创建嵌套目录,需要使用FileUtils

代码语言:javascript
复制
require 'fileutils'
FileUtils.mkdir_p 'foo/bar'
# => ["foo/bar"]

Edit2:你不一定要使用FileUtils,你可以做系统调用(来自@mu的更新太短了):

代码语言:javascript
复制
> system 'mkdir', '-p', 'foo/bar' # worse version: system 'mkdir -p "foo/bar"'
=> true

但这看起来(至少在我看来)和你使用外部“工具”一样糟糕,这些“工具”在某些系统上可能是不可用的(尽管我很难想象系统没有mkdir,但谁知道呢)。

票数 284
EN

Stack Overflow用户

发布于 2015-03-03 15:35:08

简单的方法:

代码语言:javascript
复制
directory_name = "name"
Dir.mkdir(directory_name) unless File.exists?(directory_name)
票数 82
EN

Stack Overflow用户

发布于 2017-04-22 16:54:15

另一种简单的方法:

Dir.mkdir('tmp/excel') unless Dir.exist?('tmp/excel')

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19280341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档