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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

目次

1時間でできる無料体験!

 

田島悠介

今回は、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

 

コラム

実は私も!?独学で損する人の特徴

「スクールは高いから独学で成功する」という気持ちの方は多いと思います。
もちろんその方が金額は低く抑えられるでしょう。
ただ 独学には向き不向きがあり、実はスクールが向いている人も大勢います。

そんな方のために参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困って挫折しそうなときに、質問や相談できる相手がいる環境で学んでいきたいなと思った
  • ・わかった気になっているだけだったので、自分を追い込む環境に置いた方がいいと感じた
  • ・スクールのカリキュラムで市場に求められるスキルを学ぶべきと思った

少しでも当てはまる部分があれば、 スクールが向いているかもしれません。
お試しのつもりで、まずは一度 無料体験 に参加してみませんか?

初心者でも最短1時間で学習が体験できるカリキュラム、現役エンジニアに何でも相談できるカウンセリング、無制限のチャット質問サービスすべて無料で体験 できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら体験者限定の割引特典付き! 無料体験はこちら

実践的な使い方

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

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

ここではファイルが存在する場合「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や家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

1時間でできる無料体験!

Pythonを学習中の方へ

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

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

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

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

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

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

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

独学に限界を感じたら…テックアカデミーに相談しよう

プログラミングを独学していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 独学に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう 厳しい試験を通過した講師 があなたの相談に真摯に向き合います。

「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」

こんな気持ちでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料で予約する