目次
__file__
.pyファイルにパスを直接書くと、フォルダの場所が変わってしまうと不便(実行できなくなる等)pathib.Path(__file__)- コマンドラインから
.pyファイルを実行したときに、そのフォルダPATHがわかる
- コマンドラインから
- ファイルが実行された場所のPATHため、
pyファイル内にしか記述できない - そのため、JupyterやIpythonでは利用できない(はず)
print('hello,world!')
import pathlib
home = pathlib.Path().home()
running_file = pathlib.Path(__file__)
file_parent_dir = pathlib.Path(__file__).parent
absolute_path = pathlib.Path(__file__).parent.resolve()
print(home)
print(running_file)
print(file_parent_dir)
print(absolute_path)モジュールで利用する場合
- 上記のファイルをimportした場合、importした時点で
printが走ってしまう(※) - なぜなら、ファイル内に直接処理が書かれているため
if __name__ == ‘__main__’:
- よって、他からモジュールとしてimportする場合は関数で設定し、下部におまじないを書いておく
- __name__
- インポートしたモジュール「〜.py」の名前、または
- コマンドラインから実行した「〜.py」の名前
- ‘__main__’
- コマンドラインからモジュールを実行すると
- __name__ には ‘__main__’ という文字列が格納される
- つまり、コマンドラインから実行された場合は、__main__が実行される(test.py)
- 一方、importされた場合は、__main__ は実行されない(読み込まれるだけ、※が防げる)
def main():
print('hello,world!')
import pathlib
home = pathlib.Path().home()
running_file = pathlib.Path(__file__)
file_parent_dir = pathlib.Path(__file__).parent
absolute_path = pathlib.Path(__file__).parent.resolve()
print(home)
print(running_file)
print(file_parent_dir)
print(absolute_path)
if __name__ == '__main__':
main()