ランダムな文字列を生成するPythonスクリプト

金曜日 , 3, 9月 2021 Leave a comment

ランダムな文字列をたくさん作る必要があったので、Pythonで文字数やレコード数、文字種を指定しランダムな文字列を生成するスクリプトを作成してみました。

genrndstr

このプログラムでできること

このプログラムは、コマンドラインで指定された文字数分のランダムな文字列を生成し標準出力に出力します。
生成するレコード数、生成に使用する文字種もコマンドライン引数で指定することができます。
コマンドは下記のように指定します。

python genrndstr.py [文字数] [レコード数] [生成に使用する文字種]

ソースコード

  • 動作確認した環境
    Python 3.9.6 (Windows 10)
    Python 3.8.10 (Ubuntu 20.04.3)
  • ライセンス
    NYSL ( http://www.kmonos.net/nysl/ )
  • ダウンロード (2021/09/03更新)
    ソース: http://ria-lab.com/omiyage/genrndstr.1.0.0.zip
  • #
    # 指定文字数のランダムな文字列を指定回数分標準出力に出力するプログラム
    #
    # This software is distributed under the license of NYSL.
    # http://www.kmonos.net/nysl/
    #
    #  python genrndstr.py [文字数] [レコード数] [生成に使用する文字種]
    
    import random
    import string
    import sys
    
    
    # 指定文字列を使ったletters_count文字のランダムな文字列を生成する
    def genrndstr(letters_count, letters):
        return ''.join([random.choice(letters) for i in range(letters_count)])
    
    # 引数から出力する文字数、レコード数、文字種を取得
    # 文字種が省略された場合のデフォルトは英大文字小文字+数字
    if len(sys.argv) < 2:
        l = 8
        r = 1
        s = string.ascii_letters + string.digits
    else:
        # 文字数
        if sys.argv[1].isdigit():
            l = int(sys.argv[1])
        else:
            print('length is not integer.')
            exit(-1)
    
        # レコード数
        if len(sys.argv) > 2:
            if sys.argv[2].isdigit():
                r = int(sys.argv[2])
            else:
                print('record count is not integer.')
                exit(-1)
        else:
            r = 1
    
        # 文字種
        if len(sys.argv) > 3:
            s = str(sys.argv[3])
        else:
            s = string.ascii_letters + string.digits
    
    
    # rレコード分出力する
    for i in range(r):
        print(genrndstr(l, s))
    
    
    

    Please give us your valuable comment

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください