稼働中

マイクロビット(m_19)モジュール sys this

module – sys this

thonny-microbitには「antigravity、array、audio、builtins、collections|ucollections、gc、love、machine、math、microbit、micropython、music、neopixel、os、radio、random、speech、sys、struct|ustruct、time|utime、this」のモジュールがあります。※microbitモジュールは既に記載しました。

(d-18)sys -module

sysモジュールを読み込むと「version, version_info, implementation, platform, byteorder, exit, print_exception」のシステム固有関数が使えます。※詳細はPythonのドキュメントサイトなどを参照してください。

(18-01)sys.exit()

与えた終了コードで現在のプログラムを終了します。

(18-02)sys.byteorder

プラットフォームのバイト順を示します。
ビッグエンディアンでは ‘big’, リトルエンディアンでは ‘little’ となります。


>>> import sys
>>> print(sys.byteorder)
little

(18-03)sys.implementation

現在起動している MicroPython インタプリタに関する情報が表示されます。


>>> import sys
>>> sys.implementation
(name='micropython', version=(1, 9, 2))

ちなみにThonnyに同梱のPythonに切り替えて調べると以下のような情報が返りました。


>>> import sys
>>> sys.implementation
namespace(cache_tag='cpython-37', hexversion=50791152, name='cpython', 
version=sys.version_info(major=3, minor=7, micro=2, releaselevel='final', serial=0))

(18-04)sys.platform

プラットフォームを識別します。


>>> import sys
>>> sys.platform
'win32'         #Thonny(windows)に同梱されたPython 3.7.2 (bundled)の場合 

>>> import sys
>>> sys.platform
'microbit'        # BBC:MicroPythonの場合 'microbit'

(18-05)sys.print_exception(e)

例外をトレースバック付きで出力します。
※よくわかりません。詳細はPythonのドキュメントサイトなどを参照してください。


try:
    print(1 / 0)

except Exception as e:
    print('EXCEPTION=',e)
    print('TYPE=',type(e))
    print("")
    sys.print_exception(e)

実行結果


>>> %Run 1010_exception_traceback.py
EXCEPTION= division by zero
TYPE= <class 'ZeroDivisionError'>

Traceback (most recent call last):         #sys.print_exception(e)
  File "", line 8, in 
ZeroDivisionError: division by zero

(18-06)sys.version

Pythonのバージョンを返します。

(18-07)sys.version_info

Pythonのバージョンを タプルで返します。


>>> import sys
>>> sys.version
'3.4.0'
>>> sys.version_info
(3, 4, 0)

– micro:bit V2 –

モジュール名がusysになっています。sysでもimportできるようです。


>>> import usys
>>> help(usys)
object <module 'sys'> is of type module

(18-08)usys.argv -v2

現在のプログラム開始時の引数の変更可能なリスト。usys.argvは、Pythonスクリプトに渡された、コマンドライン引数のリストです。リストの先頭、sys.argv[0]はスクリプトの名前です。
コマンドラインでsys.argvは使えるがusys.argvは使えない・・・usys.argvはどう使うのかよくわかりません。


import usys
print('test_04.py')
for x in usys.argv:
    print(x)
print(usys.argv)

実行結果
コマンドラインで実行します。


C:\Py_B551\02tes>python test_03.py a b c
Traceback (most recent call last):
  File "test_03.py", line 4, in 
    import usys
ModuleNotFoundError: No module named 'usys' #コマンドラインで動かない

ちなみにusysをsysに変更して、コマンドラインで実行すると大丈夫なようです。


C:\Py_B551\02tes>python test_03.py a b c
test_03.py
a
b
c
['test_03.py', 'a', 'b', 'c']
test_03

(18-09)usys.maxsize -v2

配列や文字列等の最大数を返します。この値で32bitか64bitを判断することができます。 32bitの場合は「2147483647」、64bitの場合は「9223372036854775807」を返します。


>>> import usys
>>> usys.maxsize
2147483647     # 32bitのプラットフォーム

>>> 2**(32-1)-1
2147483647

(18-10)usys.modules -v2

読み込まれたモジュールの辞書データを返します。
micro:bitのファイルシステムからimportしたモジュールの辞書データを返します。


>>> import usys
>>> usys.modules
{}

>>> import test_01      # ファイル名に'.py'は不要
test_01
>>> import test_02
test_02

>>> usys.modules    # importしたモジュールの辞書データ
{'test_01': , 'test_02': }
>>> 

(18-11)usys.path -v2

import するモジュールを検索するパスのリスト。
使い方がよくわかりません。
usys.path.append(‘/path_name’)とか、usys.path.pop(1)など動作しますが、micro:bitのファイルシステムには階層がないのでpathは[”]だけ?のような気がします。


>>> import usys
>>> usys.path
['']                # カレントディレクトリ
>>> 

(d-19)this -module

thisモジュールを読み込むとNicholas H. Tollervey氏のメッセージが表示されます。


>>> import this
The Zen of MicroPython, by Nicholas H. Tollervey

Code,
Hack it,
Less is more,
Keep it simple,
Small is beautiful,

Be brave! Break things! Learn and have fun!
Express yourself with MicroPython.

Happy hacking! :-)
>>> 

まとめ

thonny-microbitのモジュール sys、this について記載しました。