Pythonでファイルの存在を確認する方法【初心者向け】現役エンジニアが解説

初心者向けにPythonでファイルの存在を確認する方法について解説しています。外部から受け取ったファイルを処理する際、まず最初にそのファイルの存在を確認する必要があります。existsメソッド、isfileメソッド、isdirメソッドを使った確認方法をそれぞれの違いを見ながら学習していきましょう。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Pythonでファイルの存在を確認する方法について解説します。

目次

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

ファイルの存在を確認する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

ファイルの存在を確認する理由は?

プログラミングでは、ファイルとして保存されているテキストや写真の画像を読み込んで処理する場合があります。

例えば以下のような処理を考えてみましょう。

  1. プログラム (.pyファイルや.ipynbファイル) と同じフォルダにある「test.txt」というファイルを開く
  2. ファイルを読み込む
  3. ファイルの内容を画面に表示する

この場合、1番目の処理でファイルが存在しないと、2番目以降の処理を正しく行うことができません。

またプログラムからファイルにデータを書き込む際も、同名のファイルがすでに存在しないかを確認する必要があります。

同名のファイルが存在する場合、直ちに内容が上書きされてしまいますし、Officeやメモ帳のように「元に戻す」こともできません。

さらに、プログラムの途中でファイルが存在する・しない場合で条件分岐を行い、その後の処理パターンを分けるような書き方も便利です。

このように、ファイルの存在を確認することは、プログラムで様々な処理を行うためにとても重要です。

 

[PR] Pythonで挫折しない学習方法を動画で公開中

ファイルがあるか確認する方法

Python では、標準のosライブラリを用いてファイルの存在を確認できます。

ファイルまたはフォルダの存在を確認するには exists メソッドを使用します。

os.path.exists(ファイルまたはフォルダのパス)

 

ファイルだけの存在を確認するには isfile メソッドを使用します。

os.path.isfile(ファイルのパス)

 

一方、フォルダ(ディレクトリ)だけの存在を確認するには isdir メソッドを使用します。

os.path.isdir(フォルダのパス)

 

上記のコードはいずれも、ファイルやフォルダが存在する場合には True が、そうでない場合には False が返り値として出力されます。

 

実際に書いてみよう

今回のサンプルプログラムでは、exists 、 isfile 、 isdir メソッドを使い、 ファイルまたはフォルダの存在を確認する方法を紹介します。

実行はPythonインタプリタで行います。

(インタプリタに関する説明はこちらをご参考ください)

コマンドラインで「python」と入力すると「>>>」と表示されますので、1行ずつプログラムを入力します。

コマンドラインとはWindowsではコマンドプロンプト、macやLinuxではターミナルと呼ばれる、コンピュータに指令を出すためのソフトウェアです。

ここでは、プログラムを実行するフォルダ (ディレクトリ) に「hello.txt」というファイルと「Python」というフォルダがあると仮定しましょう。

 

はじめに、必要なライブラリをインポートします。

import os

 

次にファイルの存在を確認してみましょう。

os.path.exists('hello.txt')

実行結果は以下のようになります。

True

 

次に、フォルダの存在を確認します。

os.path.exists('Python')

実行結果は以下のようになります。

True

 

つづいて、ファイルだけの存在を確認します。

os.path.isfile('hello.txt')

実行結果は以下のようになります。

True

 

つづいて、フォルダだけの存在を確認します。

os.path.isdir('Python')

こちらも実行結果は以下のようになります。

True

 

最後に、存在しないファイルやフォルダに対して適用するとどうなるか見てみましょう。

os.path.exists('goodmorning.txt')
または
os.path.isfile('Python')
または
os.path.isdir('hello.txt')

上記はいずれも実行結果は以下のようになります。

False

 

実践的な使い方

実際のプログラミングでは、以下のようにファイルの有無を条件分岐と組み合わせて使用することがあります。

(条件分岐に関する説明はこちらをご参考ください)

ここではファイルが存在する場合「hello.txt」を読み込んで中身を出力するようにしましょう。

hello.txtには各国の挨拶が記載されています。

if(os.path.exists('hello.txt')):
    fileobj = open('hello.txt')
    data = fileobj.read()
    fileobj.close()
    print(data)

 

「hello.txt」ファイルが存在する場合、実行するとファイルの内容が表示されます。

こんにちは
Hello
你好

ちゃんとファイルの中身が出力されていますね!

このように、ファイルが存在するかの確認は、条件分岐と組み合わせて便利な処理を行うことができます。

 

執筆してくれたメンター

太田和樹(おおたかずき)

ITベンチャー企業のPM兼エンジニア普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容が分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

Pythonを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を完全オンラインでしっかり習得できます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!