Je souhaite stocker un fichier sous le nom /a/b/c/d.txt, mais je ne sais pas si l'un de ces répertoires existe et je dois les créer récursivement si nécessaire. Comment faire ça en rubis?
101
Utilisez mkdir_p
:
FileUtils.mkdir_p '/a/b/c'
Il _p
s'agit d'un maintien unix pour parent / chemin, vous pouvez également utiliser l'alias mkpath
si cela a plus de sens pour vous.
FileUtils.mkpath '/a/b/c'
Dans Ruby 1.9, FileUtils a été supprimé du noyau, vous devrez donc le faire require 'fileutils'
.
FileUtils
etPathname
sont probablement les outils les plus importants pour la création de scripts Ruby shell.Utilisez mkdir_p pour créer un répertoire de manière récursive
la source
Si vous utilisez des machines unixy, n'oubliez pas que vous pouvez toujours exécuter une commande shell sous ruby en la plaçant dans des backticks.
la source
Fichier.makedirs
la source
mkdir_p
andmkpath
ruby-doc.org/stdlib-2.6.5/libdoc/fileutils/rdoc/…Chemin à la rescousse!
la source
FileUtils.mkdir_p '/a/b/c'
+ créerd.txt
en même temps?Pathname('/a/b/c/d.txt').dirname.mkpath
etFile.write('/a/b/c/d.txt', content)
sansfilename = '/a/b/c/d.txt'.rpartition('/').last
et le reste de l'analyseVous pouvez également utiliser votre propre logique
Donc si le chemin est «tmp / a / b / c» si «tmp» n'existe pas, «tmp» est créé, alors «tmp / a /» et ainsi de suite.
la source