ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【python】pythonを使ってランダムな文字列を作成する

 令和という時代になっても、時折「添付のzipファイルにパスワードをかけて送れ」という古の儀式が発生します。

 その度にいい感じのパスワードを考えたりするのが面倒だったので、面倒なことはpythonにやらせろという諺に従って適当に調べて書いてみた備忘録になります。


 では、始めます。


・ランダムな文字列を作成するソースコード
 結論から言うと以下のソースコードでできます。

・createRandomString.py

#
# ランダムな文字列を作成する
#
import sys
import random
import string


# 引数の桁数だけランダムな文字列を作成する関数
def create_random_string(n):
    # string.ascii_letters:アルファベット(小文字・大文字含む)
    # string.digits:数字
    # string.punctuation:ASCII 文字の記号
    return ''.join(random.choices(string.ascii_letters + string.digits + string.punctuation, k=n))


if __name__ == "__main__":
    args = sys.argv

    if len(args) == 2 and str(args[1]).isdigit():
        print(create_random_string(int(args[1])))
    else:
        print("引数に桁数の数字を設定して実行してください。")

 使い方としては、上記ファイル実行時に引数に桁数の数字を入力した状態で実行すると、その桁数のランダムな文字列を返してくれます。
f:id:rikoubou:20211105154431p:plain


 以上がpythonを使ってランダムな文字列を作成するソースコードになります。

 確率的にアルファベットだけになったり、同じ記号や文字が繰り返し出現したりなどはありますが、その場合は一文字ずつチェックするような処理を入れたりすると良いかと思います。
 またそれぐらいであればわざわざチェック処理を入れなくても良さげな文字列が出るまで繰り返し実行する方が楽そうです。

 そもそも古の儀式自体がもう…というのはありますが…。


・参考資料