我正在尝试使用以下代码创建一个目录:
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
语句没有创建这个目录?
发布于 2013-10-10 03:08:24
您可能正在尝试创建嵌套目录。假设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
,但谁知道呢)。
发布于 2015-03-03 15:35:08
简单的方法:
directory_name = "name"
Dir.mkdir(directory_name) unless File.exists?(directory_name)
发布于 2017-04-22 16:54:15
另一种简单的方法:
Dir.mkdir('tmp/excel') unless Dir.exist?('tmp/excel')
https://stackoverflow.com/questions/19280341
复制相似问题