1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

【Python入門】split textでパスを操作する方法

【Python入門】
Pocket

プログラムを作る際には、ファイルのパスを操作することが多々あります。パスはディレクトリ(フォルダ)やファイルを保存している場所です。Pythonにはパスを簡単に操作するための関数が揃っています。

今回は、Pythonでファイルのパスを操作する方法について解説します。

パスを分割する

splitでディレクトリ名とファイル名を分割する

パスを分割するうえで一番使われるのがディレクトリ名とファイル名を分割することです。そのためにはos.pathモジュールのsplit()を使います。

split()はosモジュールに含まれるので、必ずosをインポートしましょう。split()にパスを渡すと、パスをディレクトリとファイルに分割して返します。変数1にはディレクトリ名、変数2にはファイル名がそれぞれ格納されます。

実行結果

ディレクトリ名:C:\python35, ファイル名:test.txt

splitextでパスを拡張子で分割する

パスを操作する際には、パスを拡張子で分割したいことがあります。これはパスが文字列であることを利用し、for文とスライス操作で拡張子で分割することができます。

実行結果

拡張子:.txt, そこまでのパス:C:\python35\test

拡張子でパスを分割できましたが、コードが長くなってしまいますね。わざわざfor文を使わなくても、文字列のindex()を使えばもっと短くなりそうです。

実行結果

拡張子:.txt, そこまでのパス:C:\python35\test

for文を使うよりはかなり短くなりました。しかし、osモジュールに用意されているsplitextを使うことで、さらに短い記述で拡張子での分割を実現することができます。

実行結果

拡張子:.txt, そこまでのパス:C:\python35\test

splitextを使うと、簡単にパスを拡張子で分けることができます。split()のように変数を2つ用意し、左側の変数に拡張子を除いたパス、右側の変数に拡張子が格納されます。splitextの引数に拡張子がない場合はパスと空の文字列が返されます。

実行結果

拡張子:, そこまでのパス:C:\python35\

2. パスを連結する
split()やsplitext()を使って分割したパスを組み合わせて別のパスを作るとします。split()やsplitext()は分割したものを文字列として返すので、文字列を足し合わせるようにすることで連結することができます。

実行結果

拡張子:.txt, そこまでのパス:C:\python35\test
拡張子:.csv, そこまでのパス:C:\python27\test2
新しいパス:C:\python35\test.csv

これでもパスの連結はできます。しかし、普通に文字列を連結してパスを作ると、余計な文字が付いたり、逆に足りなかったりすることがあります。

今、C\python27\というディレクトリの中身が以下のようになっているとします。

このtestというディレクトリの中に、新しいファイルを作るために以下のようなプログラムを実行します。

path1を分割してできた「text.txt」というファイル名とpath2を分割してできたtestディレクトリまでのパスを足し合わせてtestディレクトリの中にtest.txtというファイルを作ろうとしています。

ところがこのプログラムを実行してもtestフォルダの中には何も作られず、C:\python27の中が以下のようになります。

実はパスとファイル名の間に「\」を忘れていたため、new_pathの中身が「C:\python27\testtest.txt」になっていたのです。こういったミスをなくすために、パスを連結する際はjoin()を使いましょう。

実行結果

(C:\python27\testの中身)
test.txt

os.path.joinはパス名とファイル名を結合する関数です。その際に、パスとファイルの間に「\」があるかどうかを判断し、ない場合は自動で付け足してくれます。これにより、「\」の付け忘れを防ぐことができます。もちろん、正しいパスを渡した場合はそのまま結合してくれます。パスを結合する際には、os.path.joinを使うようにしましょう。

【おすすめ記事】
Pythonを学びたい方は必見!おすすめスクールまとめ5選
【無料で使える】Pythonを勉強できる学習サイト7つ
Pythonの本・参考書の評判
【Python入門】if 文での真偽判定の仕方(TrueとNone)
【Python入門】モジュールを扱う際に重要な「if __name__ == ‘__main__’:」とは?

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る