Python基礎(番外編1):ID・PASSの管理
1.概要
Webスクレイピング時などでID, Passwordを入力する場面がありますがコードに直接記載したくないことがあります。。
今回は別ファイルから値を読み出す手法を紹介します。
2.サンプルファイル
今回ユーザーネームとパスワードはそれぞれ 'KIYO'、 'note1234'とします。まず初めに今回使用するファイルを自作しておきます。
[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'])
note12345.自作モジュール
本章ではID, Password専用のモジュールを作成します。ファイルの構成としてsecretkiyo.pyを同じディレクトリに保存します。

5-1.モジュールにクラスの定義
モジュールファイルに下記を考慮してデータ記載します。
【モジュールファイル作成時の留意点】
●使用する時に覚えやすいように@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 moduleでファイルを読み込めます。注意点として「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 Twitter12345-4.参考_モジュールの名前
モジュールの名前で”secret_kiyo.py”のように_を入れたらうまく読み込めませんでした。細かい部分は理解したら追って記載予定。
参考資料
あとがき
SQLとかでサクッと取れたらいいかもしれないけどそこまでのスキルはないため、追ってよりよい案を検討。
ただ自分用のやつはID, PASSWORDは直打ちすることが多いのでそこまでやる気はでないかな・・・・
