C:/Downloads ├ photo.jpg ├ data.csv ├ demo.csv ├ test.csv └ /subfolder └ addr.csv
import os
import glob
filepath = 'C:/Downloads'
files = glob.glob(filepath + '/*.csv')
for file in files:
filename = os.path.basename(file)
print(filename)
data.csv
demo.csv
test.csv
demo.csv
test.csv
上のサンプルプログラムは、フォルダ内のCSVファイルのみを取得して、for文でファイル名を表示する処理をしています。
ファイル名 取得 自分 自身
__file__
C:/pysuki/sample.py
#sample.py
fileself = __file__
print(fileself)
C:\pysuki\sample.py
Pythonでは、ファイル自身は __file__ です。
filename = os.path.basename(__file__)
print(filename)
sample.py
os.path.basename()を組み合わせるとファイル名を取得できます。
ファイル名 取得 os.path
os.path.basename(path)
import os
filepath = 'C:/Downloads/data.csv'
filename = os.path.basename(filepath)
print(filename)
data.csv
ファイル名は、os.path.basename()で取得できます。
パスの区切りは、次のどれかのように書くことができます。
r'C:\test.csv''C:\\text.csv''C:/test.csv'
os.path.split(path)
import os
filepath = 'C:/Downloads/data.csv'
filename = os.path.split(filepath)[-1]
print(filename)
data.csv
os.path.split()でもファイル名を取得できます。
basename()を使うほうが明示的です。
ファイル名のみ 取得 拡張子なし
os.path.splitext(path)
import os
filepath = 'C:/Downloads/demo.csv'
filename = os.path.splitext(os.path.basename(filepath))[0]
print(filename)
demo
ファイル名のみは、os.path.splitext()を合わせて使うことで取得できます。
import os
filepath = 'C:/Downloads/demo.csv'
filename = os.paht.basename(filepath)
filenames = os.path.splitext(filename)
print(filenames)
(‘demo’, ‘.csv’)
splitextは、拡張子(extension)を分割(split)する関数です。
上の例では、ファイル名’demo.csv’を分割してタプルで返します。
[0] [1]
(‘demo’, ‘.csv’)
(‘demo’, ‘.csv’)
[0]を指定すると、タプルの先頭のみ‘demo’を取得することになります。
ファイル名 取得 pathlib
pathlib.Path(path).name
import pathlib
filepath = 'C:/Downloads/test.csv'
filename = pathlib.path(filepath).name
print(filename)
test.csv
pathlibモジュールを使うときは、.nameで取得できます。
ファイル名 取得 一覧 リスト
os.listdir(path)
C:/Users/Downloads ├ photo.jpg ├ data.csv ├ demo.csv ├ test.csv └ /subfolder └ addr.csv
import os
folder = 'C:/Users/Downloads'
files = os.listdir(folder)
print(files)
[‘photo.jpg’, ‘data.csv’, ‘demo.csv’, ‘test.csv’, ‘subfolder’]
os.listdir()を使うと、フォルダのなかにあるファイルをリスト(一覧)で取得できます。
ファイル名 取得 glob 一覧 リスト
glob.glob(pathname)
C:/Users/Downloads ├ photo.jpg ├ data.csv ├ demo.csv ├ test.csv └ /subfolder └ addr.csv
import glob
filedir = 'C:/Users/Downloads'
files = glob.glob(filedir+'/*.csv')
print(files)
[‘C:/Users/Downloads\\data.csv’, ‘C:/Users/Downloads\\demo.csv’, ‘C:/Users/Downloads\\test.csv’]
glob.glob()を使うと、指定した拡張子のファイルをリスト(一覧)で取得できます。
import glob
filedir = 'C:/Users/Downloads'
files = glob.glob(filedir+'/**/*.csv', recursive=True)
print(files)
[‘C:/Users/Downloads\\data.csv’, ‘C:/Users/Downloads\\demo.csv’, ‘C:/Users/Downloads\\test.csv’, ‘C:/Users/Downloads\\subfolder\\addr.csv’]
サブフォルダ(下層フォルダ)のファイルを再帰的に取得することもできます。