読者です 読者をやめる 読者になる 読者になる

意味悲鳴

PythonとかUnityとか.技術ブログでしたが,研究ブログにシフトしました.

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)

行数自体は増えているけど,こっちだとファイルパスのリストから一発で作れるので,こっちの方が良いと思われる.