苦学楽学塾 ホームページ
最終更新日:2024年12月30日
Pythonのモジュールうち代表的なものを掲げておきます。モジュールを利用する際には、例えば、mathモジュールを使うのであれば、プログラムの先頭で、import mathと宣言すると、mathモジュールが使用可能になります。
(a) math
数学で用いる主要な関数が網羅されているモジュールです。
x1 = float(input("実数値:"))
print("eの", x1, "乗は、", math.exp(x1))
print(x1, "の自然対数は、", math.log(x1))
print(x1, "の常用対数は、", math.log10(x1))
print(x1, "の平方根は、", math.sqrt(x1)
print("自然対数の底eは、", math.e)
print("円周率は、", math.pi)
とすると、実数値:と聞かれて、2.0と入力すると、画面に
eの2.0乗は、7.38905609893065
2.0の自然対数は、0.6931471805599453
2.0の常用対数は、0.3010299956639812
2.0の平方根は、1.4142135623730951
自然対数の底は、2718281828459045
円周率は、3141592653589793
と表示します。他にも("math."を省略します)、comb(組み合わせの数),fabs(絶対値),factorial(階乗),floor(x以下の最大の整数,ガウス記号),frexp(仮数と指数を取り出す),gcd(最大公約数),isqrt(整数の平方根のガウス記号),lcm(最小公倍数),modf(小数部分と整数部分を取り出す),perm(順列の数),trunc(小数部の除去),cbrt(立方根),exp2(2のx乗),log2(2を底とする対数),acos(余弦の逆関数),asin(正弦の逆関数),atan(正接の逆関数),atan2(x軸となす角),cos(余弦),sin(正弦), tan(正接),dist(2点間の距離),hypot(原点との距離),degrees(ラジアンを度に変換),radians(度からラジアンに変換),acosh(coshの逆関数),asinh(sinhの逆関数),atanh(tanhの逆関数),cosh(双曲線関数のcos),sinh(双曲線関数のsin),tanh(双曲線関数のtan),erf(誤差関数),erfc(相補誤差関数),gamma(ガンマ関数),inf(無限大)などがあります。
(b) cmath
複素数の計算をサポートするモジュールです。phase(偏角),polar(極形式),exp(複素数の指数関数)などの関数があります。
(c) random
乱数を発生させるモジュールです。seed(初期化),getstate(内部状態の取得),setstate(内部状態の復元),randbytes(乱数バイト列の生成),randrange(指定範囲内の乱数の生成),randint(指定範囲の整数乱数の生成),choice(シーケンスからランダムに要素を選択),choices(シーケンスからランダムに要素を選択して重複ありのリストを作る),shuffle(シーケンスのシャッフル),sample(シーケンスからランダムに要素を選択してリストを作ります。元々重複がある場合は、その重複の程度を反映します),random(0から1の間で乱数を生成),uniform(指定範囲内の乱数を生成),betavariable(ベータ分布の生成),expovariable(指数分布の生成),gammavariate(ガンマ分布の生成),gauss(ガウス分布の生成),normalvariate(正規分布の生成)などの関数があります。
(d) statistics
統計処理をサポートするモジュールです。mean(平均),median(中央値),mode(最頻値),stddev(標準偏差),variance(分散),quantiles(四分位数),covariance(共分散),correlation(相関係数),linear_regression(線形回帰)などの関数があります。
(e) datetime
日付時刻を扱うモジュールです。
dt1 = datetime.datetime.now()
print("現在の時刻は、", dt1)
print(dt1.year, "年", dt1.month, "月", dt1.day, "日", dt1.hour, "時", dt1.minute, "分", dt1.second, "秒")
とすると、画面に、
現在の時刻は、2024-08-01 16:59:23855755
2024 年 8 月 1 日 16 時 59 分 23 秒
などと表示されます。
なお、datetimeが長いので、fromとasを使って、次のように、datetimeモジュール内のdatetimeオブジェクトにdtという名前をつけて利用することができます。
from datetime import datetime as dt
dt1 = dt.now()
print("現在の時刻は、", dt1)
print(dt1.year, "年", dt1.month, "月", dt1.day, "日", dt1.hour, "時", dt1.minute, "分", dt1.second, "秒")
としても上記と同じ結果が得られます。
(f) os
osモジュールは、OSに付属する機能を呼び出すためのものです。クラスos.environは、辞書型に似たマップ型と呼ばれるもので、
print(os.environ)
とすると、環境変数とその値の一覧をどどどと表示します。
print(os.environ['PATH'])
とすると、環境変数PATHの内容を確認できます。但し、os.getenv()という関数も用意されていて、os.getenv('PATH')としても環境変数PATHの内容を確認できます。
os.environ['PATH'] = os.environ['PATH'] + ";C:\new_path"
として、環境変数PATHの内容を編集することもできます。
環境変数ENVが存在する場合、
del os.environ['ENV']
とすると、環境変数ENVを削除できます。
但し、編集・削除などをPythonプログラムの中で行っても、Pythonが終了すると、環境変数はPython起動前に戻ってしまいます。
プログラムを動作させるに当たって、カレント・ディレクトリを変更したい場合には、os.chdir()関数を使います。os.chdir("C:\\new_path")とする(最初の'\'はエスケープ文字として扱われるので、'\'そのものを意味させるためには、'\\'と'\'を2つ重ねてください)と、カレント・ディレクトリが、C:\new_pathに移ります。
現時点のカレント・ディレクトリを知りたい場合には、str1 = getcwd()とすると、カレント・ディレクトリが文字列str1に入ります。
ファイルの情報を取得するのには、os.stat()関数を使います。ファイルのパスが文字列p1に入っているとして、st1 = os.stat(p1)とすると、stにfileの情報が入ります。st1.st_atimeに最終アクセス時刻、st1.st_mtimeに最終更新時刻、st1.st_birthtimeにファイル生成時刻、st1.st_sizeにファイルのサイズが整数値で入ります。時刻データは浮動小数点データで入るので、これを年月日時分秒に直すのには、上記datetimeモジュール内のdatetimeオブジェクトのfromtimestamp()関数を使います。
print("最終アクセス時刻:", datetime.datetime.fromtimestamp(st1.st_atime))
とすると、画面に、
最終アクセス時刻: 2024-08-02 17:27:37.122469
のように表示します。
os.path.exits(path)は、文字列pathで指定したpathが実在するとTrueを返します。
os.path.isfile(path)は、pathが実在する一般ファイルの場合にTrueを返します。
os.path.isdir(path)は、pathが実在するディレクトリの場合にTrueを返します。
(g) webbrowser
インターネットの画面を表示させるためのモジュールです。
webbrowser.open("https://kgkrkgk.com", new = 2)
とすると、ブラウザが新しいタブを作って開きます。newという引数については、Pythonのマニュアルには、new = 0だと、Python実行画面のままブラウザが開き、new = 1だと新しい画面を作って開き、new = 2だと新しいタブに指定されたURLが開く、というように書かれているのですが、私が使っているWindowsでは、この設定にかかわらず、既存のブラウザの新しいタブに、URLが表示されます。
(h) glob
引数で指定されたパターンにマッチするファイルのリストを作成するglob()という関数が入っているモジュールです。test1.py,test2.pyという2つのファイルと、a1.txtというファイルが入っているサブディレクトリabcdが入っている、C:\python1というディレクトリに対して、
ef1 = glob.glob("C:\\python1\\*")
print(ef1)
とすると、'*'はすべてのファイルにマッチするので、画面に、
['C:\\python1\\abcd', 'C:\\python1\\test1.py', 'C:\\python1\\test2.py']
と表示します。recursive = Trueをつけて、
ef2 = glob.glob("C:\\python1\\*", recursive = True)
print(ef2)
としても、
['C:\\python1\\abcd', 'C:\\python1\\test1.py', 'C:\\python1\\test2.py']
と表示しますが、'*'を'**'として、
ef2 = glob.glob("C:\\python1\\**", recursive = True)
print(ef2)
とすると、サブディレクトリの中も探索して、
['C:\\python1\\', 'C:\\python1\\abcd', 'C:\\python1\\abcd\\a1.txt', 'C:\\python1\\test1.py', 'C:\\python1\\test2.py']
と表示します。
ef4 = glob.glob("C:\\python1\\test?.py")
print(ef4)
とすると、test1.pyとtest2.pyだけがマッチして、
['C:\\python1\\test1.py', 'C:\\python1\\test2.py']
と画面に表示します。
ef5 = glob.glob("C:\\python1\\*2.py")
print(ef5)
とすると、test2.pyだけがマッチして、
['C:\\python1\\test2.py']
と画面に表示します。
(i) sys
Pythonの実行環境に関する情報が得られるモジュールです。sys.versionとするとPythonのversionが得られます。sys.platformとするとPythonのプラットフォームが得られます。sys.argvとすると、コマンドライン引数がリストで取得できます。
import sys
argv1 = sys.argv
print("Pythonのversion:", sys.version, "Pythonのplatform:", sys.platform)
print("Pythonの著作権表示:", sys.copyright)
print("引数の数", len(argv1))
print(argv1)
sys.exit(0)
以下をtest2.pyに入れて、コマンドラインから
py test2.py a1 b2 c3
と打ち込むと、画面に、
Pythonのversion: 3.12.0 ・・・・・ Pythonのplatform:win32
Pythonの著作権表示:Cpyright (c) 1991-1995 ・・・・・
All Rights Reserved.
引数の数: 4
['test2.py', 'a1', 'b2, 'c3']
と表示します。コマンドライン引数をつけた形で、IDLEからコマンドライン引数をつけてtest2.pyを起動するためには、IDLEのRunメニューの[Run... Customised]サブメニューを使います(出てくるテキストボックスに、"a1 b2 c3"と入れて[OK]をクリックすると、コマンドラインから起動したのと同様の効果が得られます)。上記の末尾の、sys.exit(0)は、終了ステータス0でプログラムを終了します。
(j) pdb
(k) tkinter
画面にウィンドウを作って、ウィンドウ内で作業するためのモジュールです。このモジュールがダウンロードしたPythonに含まれるかどうか、コマンドラインプロンプトから、
py -m tkinter
と打ち込むことにより確認できます。小さなウィンドウが開いて、Tcl/Tkのバージョンがいくつ、と書いてあれば、正しくインストールされています。インストールされていない場合は、最新のPythonをダウンロードしてください。tkinterで必要となるモジュールは幾つかにまたがっているので、最初に、
from tkinter import *
from tkinter import ttk
と宣言して、tkinter内のモジュール("tkinter."を付けなくてもそのままの名前で使えます)と、tkinter.ttkモジュールをimportします。次に、
root = Tk()
root.title("テストします")
txt1 = StringVar()
frm1 = ttk.Frame(root, padding=10)
frm1.grid()
ttk.Label(frm1, text="こんにちは。").grid(column=0, row=0)
ttk.Entry(frm1, textvariable=txt1).grid(column=1,row=0)
ttk.Button(frm1, text="中止", command=root.destroy).grid(column=0, row=1)
root.attributes("-topmost", True)
root.mainloop()
print("入力:", txt1.get())
とすると、Tkクラスのインスタンスを作成してルート・ウィンドウを作成し、「こんにちは。」と書かれたラベルとテキスト入力枠、[中止]ボタンを有するフレーム・ウィジェットfrm1を作成し、最前面に表示します。テキスト入力枠をクリックして何か入力し、[中止]ボタンをクリックすると、ウィンドウを閉じて、root.mainloop()の次のprint("入力:",txt1.get())を実行し、テキスト入力枠に入力した内容を表示します。
tkinterについては、詳細に書くと1冊の本になってしまうので、ネットで検索して調べてください。
【広告】 ここから広告です。ご覧の皆さまのご支援ご理解を賜りたく、よろしくお願いいたします。
【広告】 広告はここまでです。