見出し画像

Python基礎7:システムパラメータ/パス管理(sys)

1.概要

 システムパラメータやパス管理ができるPython標準ライブラリのsysを紹介します。

2.パス(環境変数)とは

 初めにCMDコマンドプロンプトでnotepadを入力してみるとメモ帳が立ち上がります。PCがメモ帳(notepad)を立ち上げることができた理由は、notepadの場所(正確には探す場所)を覚えており、その中からnotepadを探したためです。

 ここでのパスとはPCが記憶する場所であり「パスを通す」とはPCが選択する箇所を覚えさえることになります。逆に言うとパスが通ってないとPCは探す場所がわからないためファイル/ディレクトリを検索できません。
 参考までにパスの通し方は下記の通りです。

3.モジュールの検索パス:sys.path

 モジュール(Pythonファイル)が検索するパスを確認するにはsys.pathを使用します。実行個所は下記フォルダ内の”note_sys.ipynb”で実施しています。

[In]
import sys

sys.path

[Out]
['c:\\Users\\KIYO-\\Desktop\\note\\note_sys',
 'C:\\Users\\KIYO-\\anaconda3\\python39.zip',
 'C:\\Users\\KIYO-\\anaconda3\\DLLs',
 'C:\\Users\\KIYO-\\anaconda3\\lib',
 'C:\\Users\\KIYO-\\anaconda3',
 '',
 'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages',
 'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\locket-0.2.1-py3.9.egg',
 'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\win32',
 'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\win32\\lib',
 'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\Pythonwin',
 'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\IPython\\extensions',
 'C:\\Users\\KIYO-\\.ipython',
 'C:\\Users\\KIYO-\\AppData\\Roaming\\Python\\Python39\\site-packages']

 検索パスを確認すると「実行ファイルとカレントディレクトリが一番最初に検索され、その後はリスト順に検索」されることがわかります。sys.pathはリスト形式のため後述する通りパスを追加することが可能です。

3.検索パスを追加:sys.path.append()

 前章の通りカレントディレクトリは”環境変数の設定”をしなくても検索パスとして扱われますが、それ以外はパスが通ってないと検索ができません。 
 Pythonでパスを通す場合はsys.path.append('path')を使用します。

【パスを通すときの注意点】
●ファイル実行時だけパスを通すためファイルを閉じるとパスの設定はリセットされます。
●sys.pathのリストにappendするため指定パスは一番後ろに入力されます。つまり市さん最後に検索されるため、前の検索パスと干渉しないことを確認する必要があります。

[In]
import sys

sys.path.append(r'.KIYO/適当に名前つけたよ')
sys.path[-1] #リストの一番最後の値を取得

[Out]
'.KIYO/適当に名前つけたよ'

 検索パスの追加(sys.pathの編集)方法として「環境変数PYTHONPATH」があります。触ってみたけど難しかったので紹介まで。

4.コマンドラインから引数を取得:sys.argv

 (Jupyterではなく)pythonファイルをターミナルから実行するときに引数を渡したい場合はあります。引数を渡す場合はsys.argvを使用します。
 ターミナル経由でsys.argvを使用するとリスト形式で['モジュール名']が渡され、引数を記載すると['モジュール名', '引数']で渡されます。よってターミナルから引数を取得したい場合はsys.argv[1]となります。

[In] notesys.py
import sys 

print(sys.argv)

[Out]
['ファイル名', '引数1', '引数2'・・・ ]
詳細は下記参照

参考記事

あとがき

 前記事からsysだけ分離しました。


この記事が気に入ったらサポートをしてみませんか?