はじめに
今回は、Pythonで読み込んだCSVファイル名を取得する方法について学びました。
使用環境は以下のとおりです。
- PC: MacBook Air (11-inch, Early 2015)
- OS: macOS バージョン11.6(20G165)
- Pythonバージョン: 3.8.8(64-bit)
背景
大量のCSVデータを扱っていると、
「このデータがどのファイルに由来するものかを明確にしておきたい」
と強く思うようになりました。
そのため、各データにファイル名を付与して管理できないかと考えました。
実際に行ったコマンド
以下の方法で、CSVファイル名を取得できました。
import os
basename = os.path.basename(filepath)
print(basename)
filepath
は、読み込んだCSVファイルのパスです。os.path.basename(filepath)
を使うと、パスの末尾にあるファイル名のみを文字列(str型)として取得できます。
思考の流れ
① 「ファイル名が見つからない」
最初、CSVファイル内を見ても、
**「このデータが何なのか」**を示す情報が見つからず困っていました。
ファイルの中身だけでは特定できなかったため、
ファイル名そのものをデータ管理に使うしかないと考えました。
② 「ilocは使いたくない」
初めに思いついたのは、iloc
を使ってファイルごとにインデックスを操作する方法です。
しかし、iloc
は**「行番号によるデータ取得」**であり、
ファイル名そのものを直接取得する用途には向かないと判断しました。
「もっとスマートにできる方法はないか」と探していたところ、os.path.basename()
にたどり着きました。
③ 「os.path.basename()で解決」
os.path.basename(filepath)
を使うと、
ファイルパスから簡単にファイル名だけを取り出すことができました。
これで、データにファイル名を付与して管理する基礎準備が整いました。
今後、実際にデータフレームにファイル名を追加する方法も整理して、改めてまとめたいと考えています。
まとめ
- ファイル名を取得するには、**
os.path.basename(filepath)
**を使うとよい。 - ファイルパスから簡単に末尾のファイル名のみを取得できる。
iloc
は行データの取得には有効だが、ファイル名取得の用途には適さない。
今回の経験を通じて、「パス操作」には専用関数を素直に使うべきだという教訓を得ました。
今後も、ファイル管理をよりスムーズに行えるよう工夫を重ねていきたいと思います。