Kaggleのコンペの一つ「タイタニック号」のデータが入っているpathの取得方法についてまとめます。
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
1つずつ見ていきましょう。
import os
osモジュールについて下記の記事を読んでみました。
https://www.sejuku.net/blog/67787
以下原文↓
osモジュールは、OSに依存しているさまざまな機能を利用するためのモジュールです。
主にファイルやディレクトリ操作が可能で、ファイルの一覧やpathを取得できたり、新規にファイル・ディレクトリを作成することができます。
続きます。
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
os.walk()メソッドは、引数に受け取ったディレクトリツリー以下のファイル名をツリーをトップダウンもしくはボトムアップに走査することで作成します。
デフォルト仕様は下記のとおりです。
os.walk(top, topdown=True, onerror=None, followlinks=False)
ディレクトリツリーを走査した結果、戻り値として、
①ディレクトリ名
②内包するディレクトリリスト
③内包するファイルリスト
が返ってきます。
試しに、/kaggle/input の中身をdirname, names, filenamesとして取り出し、printしてみると、
for dirname, names, filenames in os.walk('/kaggle/input'):
print(dirname)
print(names)
print(filenames)
/kaggle/input
['titanic']
[]
/kaggle/input/titanic
[]
['train.csv', 'test.csv', 'gender_submission.csv']
と返ってきました。
今回は内包するディレクトリリストはtitanicのみで
/kaggle/input/titanic の中に、
['train.csv', 'test.csv', 'gender_submission.csv']
という3つのcsvファイルが入っているディレクトリ構造であることがわかりました。
2つめのfor文では、filenamesに格納された3つのcsvファイルを要素として含むリストから、ファイルを1つずつfilenameという変数に取り出し、
os.path.joinメソッドで、ディレクトリのパスと繋げて出力しています。
_は、戻り値や要素を保存しないという意味です。
結果↓
/kaggle/input/titanic/train.csv
/kaggle/input/titanic/test.csv
/kaggle/input/titanic/gender_submission.csv
最後まで読んで頂き有難うございました。