[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
?