やりたいこと
ランダムにダミーの名前でディレクトリを作成したい. また, 名前を指定してディレクトリを作成したい, 既に存在する場合はエラーを出さない.
コード
ランダムな文字列を名前にしてディレクトリを作成
os.makedirs(dirname, exist_ok=True)
にて exist_ok=True
のオプションを指定して既に存在する場合もエラーを出さなくする.
"".join([random.choice(string.ascii_letters) for i in range(20)])
で英語の大文字小文字をランダムに並び替えた文字列を20文字長で作成している.
import os import random, string def mkdirIfNotExists(dirname, randomName=False): if not dirname=="": os.makedirs(dirname, exist_ok=True) elif randomName: os.makedirs(os.path.join("./", "dummy_" + "".join([random.choice(string.ascii_letters) for i in range(20)])), exist_ok=True)
UUID4を生成
UUIDを用いて全く衝突がないように名前を指定することもできる.
uuid --- UUID objects according to RFC 4122 — Python 3.8.1rc1 ドキュメント
uuid.uuid4()
でUUID4を生成し, マイナスをアンダーバーに置き換えている.
import uuid for _ in range(10): print(str(uuid.uuid4()).replace("-", "_"))
出力
7beaab61_cbb9_469c_82ce_1cff82fc8825 1a51effa_bc3e_441d_8418_75787fdd04d1 15ee8cfd_935d_4857_a385_44540e30c460 d0f277ce_c357_446b_97a3_a2e97f9b7d89 20b27dab_7f17_4cb0_9118_a7705d002956 3ffe3aa8_0426_4be5_8be4_19e85bcfdf27 6c557766_71fc_4c79_8377_a4c366aa6f11 31f09a5e_9a53_4224_a837_721dc04810cd d49cc5bb_d18b_489f_b326_3013e38271a3 bde8981c_91b0_4348_a61b_60d2a3b07c05