はじめに
会社のシステムがかなり古く、独自で自動化システムを作ることを目指している。
会社のデータの多くはエクセルで管理され、ファイルの場所を指定することが絶対必要条件になる。
環境
python 3.7.8
window 10
Code
パスの指定方法
path = r'C:\Users\junsa\Desktop\python'
## 文字列の中の '\'を認識するので、rawの「 r 」を書くことで認識しなくする
file_name = 'labo.py'
print(path + fr'\{file_name}')
# 'C:\Users\junsa\Desktop\python\labo.py'
## 文字列の前に f を書くことで変数を入れることができる。
現在のファイルのパスを得る
import os
print('getcwd: ', os.getcwd())
print('__file__: ', __file__)
#getcwd: C:\Users\user\Desktop\python
#__file__: labo.py
##パスに存在するファイル名をすべて得る
list = os.listdir(os.getcwd())
print(list)
# ['.git','labo.py', 'README.md', '__main__.py', '__pycache__']
パスのファイル名を得る(拡張子あり、なし)
import os
filePath = r'C:\Users\junsa\Desktop\python\labo.py'
print(os.path.basename(filePath))
# labo.py
print(os.path.splitext(os.path.basename(filePath)))
# ('labo', '.py')
ファイルのフォルダ名を得る
import os
filePath = r'C:\Users\junsa\Desktop\python\labo.py'
# ファイルのフォルダ名を得る
dir_name = os.path.dirname(filePath)
print(dirname)
# C:\Users\junsa\Desktop\python
# フォルダの下位フォルダ名を得る
sub_dir_name = os.path.dirname(dir_name)
print(sub_dir_name)
# C:\Users\junsa\Desktop
ファイルのフォルダパスとファイル名を得る方法
import os
filePath = r'C:\Users\junsa\Desktop\python\labo.py'
base_dir_pair = os.path.split(filePath)
print(base_dir_pair)
## ('C:\\Users\\junsa\\Desktop\\python', 'labo.py')
環境によって拡張子で場合分けする時もある。
私の会社の場合、エクセルのファイルの拡張子が 'xls', 'xlsx', 'xlsm'などがあり、
拡張子によってはライブラリーが利用できない時も多い。
os.path.splitext
で拡張子で場合分け、os.path.dirname
でフォルダで場合分けをすると、予期せぬエラーを予防することができる。