Pythonでフルパスからディレクトリを一括で作る
なんかアレがアレでPythonでフルパスから中間ディレクトリごと一気にディレクトリ作りたいなぁってときあると思います.というかありました.
イメージとしては,何らかの親ディレクトリの下にディレクトリとファイルがたくさん存在していて,それぞれのファイルを処理した後,別の親ディレクトリの下に,ディレクトリ構造を保持したままファイルを保存したいみたいな,なんかそういうときに使えると思います.
私が取った方法はこんな感じ,でもこれイケてない.
# ディレクトリのリストをファイルにする # find [ここに/full/path/] -type d > dir_list.txt # このファイルを読み込んで,読み込んで作成する. import os dir_list = open("/dict_dir_list.txt", mode="r") with dir_list: for dir_path in dir_list: os.mkdir(dir_path.strip())
このあとfindでつくったファイルのリストを読み込んでこねこねすればエラーはいたりしないはず.なんだけど,もっとイケてる方法が.
イケてる方法としては,os.mkdir()
ではなく,os.mkdirs
をつかう.具体的な使い方としては多分こんな感じ.
import os
file_path = /full/path/hoge/hoga/filename.txt
dir_path = os.path.dirname(file_path)
os.mkdirs(dir_path)
行数自体は増えているけど,こっちだとファイルパスのリストから一発で作れるので,こっちの方が良いと思われる.