我正在尝试使用以下代码创建一个目录:
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为什么上面的语句没有创建这个目录?
Dir.mkdir
您可能正在尝试创建嵌套目录。假设foo不存在,您将收到no such file or directory以下错误:
foo
no such file or directory
Dir.mkdir 'foo/bar' # => Errno::ENOENT: No such file or directory - 'foo/bar'
要一次创建嵌套目录,FileUtils需要:
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,但谁知道)。
mkdir