めも

メモ.

ランダムな文字列でディレクトリを作成 (Python3)

やりたいこと

ランダムにダミーの名前でディレクトリを作成したい. また, 名前を指定してディレクトリを作成したい, 既に存在する場合はエラーを出さない.

コード

ランダムな文字列を名前にしてディレクトリを作成

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