メインコンテンツへスキップ
見出し画像

Python基礎(番外編1):ID・PASSの管理

    1.概要

     Webスクレイピング時などでID, Passwordを入力する場面がありますがコードに直接記載したくないことがあります。セキュリティ的に。
     今回は別ファイルから値を読み出す手法を紹介します。

    2.サンプルファイル

     今回ユーザーネームとパスワードはそれぞれ 'KIYO'、 'note1234'とします。まず初めに今回使用するファイルtxt, Jsonファイルを自作しておきます。

    [In]
    #IDとPASSをテキストファイルに作成
    with open('secret.txt', 'w') as f:
        f.write('{username:KIYO}\n{password:note1234}')
        
    #IDとPASSをJSONファイルに作成
    with open('secret.json', 'w') as f:
        f.write('''
                {
                "username":"KIYO",
                "password":"note1234"
                }
                ''')    
    画像

    3.Txtファイルを使用

     いわゆるメモ帳で作ったファイルからデータを読み込みます。

    3-1.txtファイルの構成

     textファイルの構成として、ほしいデータごとここでは辞書型に改行しております。

    [secret.txt]
    {username:KIYO}
    {password:note1234}

    3-2.txtファイル内データの取得

     textファイルのデータを改行ごとにリスト形式で取得するには①with openでtextファイルを読み込み、②\n改行で文字列を分割します。

    [In]
    with open('secret.txt', 'r') as f:
        text = f.read()
    
    print(text)
    print(text.split('\n'))
    for i in text.split('\n'):
        print(i)
    [Out]
    #print(text)
    {username:KIYO}
    {password:note1234}
    
    #print(text.split('\n'))
    ['{username:KIYO}', '{password:note1234}']
    
    #For文で取得
    {username:KIYO}
    {password:note1234}

    4.JSONファイルを使用

     拡張子がjsonであるJSONファイルからデータを読み込みます。

    4-1.JSONファイルの構成

     JSONファイルを作成しますが注意点は下記の通りです。

    【JSONファイルの注意点】
    ●データは'シングルではなく"ダブルを使用すること
    ●最後の行に,カンマは不要。それ以外は必須

    [secret.json]
    {
    "username":"KIYO",
    "password":"note1234"
    }

    4-2.JSONファイル内データの取得

     JSONファイルはjsonライブラリで読み込みます。戻り値は辞書型のため辞書と同じ扱いができます。

    [In]
    import json
    with open('secret.json', 'r') as f:
        data = json.load(f)
    
    print(data)
    print(data['username'])
    print(data['password'])
    [Out]
    #print(data)
    {'username': 'KIYO', 'password': 'note1234'}
    #print(data['username'])
    KIYO
    #print(data['password'])
    note1234

    5.自作モジュール

     本章ではID, Password専用のモジュールを作成します。ファイルの構成としてsecretkiyo.pyモジュール用pyファイルを同じディレクトリに保存します。

    画像

    5-1.モジュールにクラスの定義

     モジュールファイルsecretkiyo.pyに下記を考慮してデータ記載します。

    【モジュールファイル作成時の留意点】
    ●使用する時に覚えやすいように@dataclassを使用して値をシンプルに取得
    ●自分が覚えやすいパターンでクラスを作成
     パターン1:class名=サイト、変数=id, pass
     パターン2:class名=ID, Pass、変数:各サイト

    [secretkiyo.py]
    from dataclasses import dataclass
    
    #パターン1
    @dataclass
    class Kiyo:
        id = 'KIYO'
        password = 'note1234'
    
    #パターン2
    @dataclass    
    class Id:
        note = 'KIYO'
        twitter = 'KIYO_Twitter'
        
    @dataclass    
    class Password:
        note = 'note1234'
        twitter = 'Twitter1234'

    5-2.モジュールのメソッド確認

     同じ作業ディレクトリ内であればimport modulepyファイルでファイルを読み込めます。注意点として「moduleを書き換えたら一度ファイルを再起動」する必要があります。

    [In ※note_python番外編1_ID, PASS管理.ipynb ファイル]
    import secretkiyo
    
    print(type(secretkiyo))
    print(dir(secretkiyo))
    
    [Out]
    <class 'module'>
    
    ['Id', 'Kiyo', 'Password', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'dataclass']

     dir()関数より作成したモジュール内に上記で作成したクラス(Id, Kiyo, Password)が作成されていることが確認できます。

    5-3.データの取得:インスタンス化

     取得方法は①インスタンス化、②変数の呼び出しで可能です。

    [In] パターン1
    import secretkiyo
    
    KIYO = secretkiyo.Kiyo()
    print(KIYO.id, KIYO.password)
    
    [Out]
    KIYO note1234
    [In] パターン2
    import secretkiyo
    
    ID = secretkiyo.Id()
    PASS = secretkiyo.Password()
    
    print(ID.note, ID.twitter)
    print(PASS.note, PASS.twitter)
    
    [Out]
    KIYO KIYO_Twitter
    note1234 Twitter1234

    5-4.参考_モジュールの名前

     モジュールの名前で”secret_kiyo.py”のように_アンダーバーを入れたらうまく読み込めませんでした。細かい部分は理解したら追って記載予定。


    参考資料

    あとがき

     SQLとかでサクッと取れたらいいかもしれないけどそこまでのスキルはないため、追ってよりよい案を検討。
     ただ自分用のやつはID, PASSWORDは直打ちすることが多いのでそこまでやる気はでないかな・・・・


     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ