MRが楽しい

MRやVRについて学習したことを書き残す

Pythonで別ファイルの関数を利用する

本日は Python の調査枠です。
Python で別ファイルにまとめた自作関数を利用する方法をまとめます。

以下の記事で作成した Hololens の RestAPI のアクセス処理を一例として利用します。
bluebirdofoz.hatenablog.com

自作関数をまとめる

以下のように処理部分のみをカンストして抽出した Python スクリプトを作成します。
・HttpRequest.py

# import
import requests
import base64
import os

# 最大電池容量と残電池容量の数値を取得
# username:DevicePortalアクセスのユーザ名
# password:DevicePortalアクセスのパスワード
# ipaddress:DevicePortalアクセスのIPアドレス
def GetBattery(username='USERNAME',password='PASSWORD',ipaddress='127.0.0.1:10080'):
    print('--------------------------- START ---------------------------')
    # DevicePortal接続のための設定項目
    # isVerify:証明書の利用(DevicePortalの場合は自己証明書なので無視する)
    isVerify = False

    # RestAPIアクセスのURLを作成
    api = '/api/power/battery'
    url = 'http://' + ipaddress + api

    # RestAPIのURLと設定を指定してGET実行
    response = requests.get(url, auth=(username, password), verify = isVerify)

    # RestAPIの応答jsonメッセージを受信
    downloadData = response.json()

    # 受信したjsonメッセージを標準出力で確認
    print('--------------------------- RESPONSE JSON ---------------------------')
    print(downloadData)

    # jsonメッセージから必要なデータを取得
    # 最大電池容量
    maximumKey = 'MaximumCapacity'
    maximumBattery = downloadData[maximumKey]
    # 残電池容量
    remainingKey = 'RemainingCapacity'
    remainingBattery = downloadData[remainingKey]
    # パーセンテージの計算
    str = '{:.2%}'.format(remainingBattery / maximumBattery)

    # 取得したデータを標準出力で表示
    print('--------------------------- RESULT ---------------------------')
    print('MaximumCapacity:{0},RemainingCapacity:{1},Battery:{2},'.format(maximumBattery, remainingBattery,str))

    print('--------------------------- END ---------------------------')

同じディレクトリにある場合

作成した Python スクリプトが呼び出し元と同じディレクトリに存在する場合の方法です。
f:id:bluebirdofoz:20190322061856j:plain

以下の import 文で利用可能です。
・Main1.py

# 同ディレクトリのPythonスクリプトをインポート
import HttpRequest

# 実行指定で呼び出されているかチェック
if __name__ == "__main__":
    # 関数を呼び出し
    HttpRequest.GetBattery()

f:id:bluebirdofoz:20190322061911j:plain

フォルダの中に含まれている場合

作成した Python スクリプトが呼び出し元のディレクトリにあるフォルダ配下にある場合の方法です。
f:id:bluebirdofoz:20190322061928j:plain

以下の import 文で利用可能です。
・Main2.py

# フォルダ配下のPythonスクリプトをインポート
from HoloLensAPI import HttpRequest

# 実行指定で呼び出されているかチェック
if __name__ == "__main__":
    # 関数を呼び出し
    HttpRequest.GetBattery()

f:id:bluebirdofoz:20190322061937j:plain

因みに以下のように import することで関数名で直接呼び出すことも可能です。
・Main3.py

# フォルダ配下のPythonスクリプトの関数を直接インポート
from HoloLensAPI.HttpRequest import GetBattery

# 実行指定で呼び出されているかチェック
if __name__ == "__main__":
    # 関数を呼び出し
    GetBattery()

f:id:bluebirdofoz:20190322061949j:plain