みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
初心者向けにフォルダ作成ツールを題材としてPythonプログラミングの基本を学ぶシリーズです。
前回の記事はこちらです。
フォルダやファイルの有無を調べるos.path.exists関数の使い方についてお伝えしました。
そしてそれを活用して
- フォルダが存在すればフォルダを作成しない
- フォルダが存在しなければフォルダを作成する
という、いわゆる条件分岐の処理を作っていきたいと思っているところです。
ということで、今回はPythonで条件分岐をする基本中の基本、if~else文の作り方をお送りします。
行ってみましょう!
これまでのおさらい
えと、今何をしようとしているかといいますと、フォルダ名をリストで指定しておいて、それらのフォルダをまとめてドバっと作業フォルダに作成するというPythonプログラムを作りたいということになります。
それで、いったん以下コードでその目的は達成できるのですが…
import os
areas = ['10_アフリカ', '20_アメリカ', '30_アジア', '40_ヨーロッパ', '50_オセアニア']
for area in areas:
os.mkdir(area)
リストに指定しているフォルダ名と同名のフォルダが作業フォルダに存在していると、エラーになってしまうんですね。
それを防ごうというのが、目下の課題になっていまして、そのヒントとしてos.pathモジュールのexists関数を使えば、該当のフォルダが作業フォルダに存在しているかどうかはわかるぞ!というのが前回お伝えした内容です。
この関数は作りたいパス(今回でいうと作業フォルダなのでフォルダ名のみでOK)を指定すれば
- フォルダが存在すればTrue
- フォルダがぞ存在しなければFalse
というようにブール型の値を返します。このTrueかFalseかという情報を使って、エラーを回避していこうというのが今回のミッションになります。
if~else文で条件によって処理を分岐する
os.path.exists関数に作りたいフォルダ名を渡して、それが
- 存在している(True)のであればフォルダは作らない
- 存在していない(False)のであればフォルダを作る
というように、その存在有無によって処理を分岐するようにすればよいわけです。
Pythonで「もし~ならば…さもなくばxxx」というような条件による分岐処理を実現するには、if~else文を使います。
書式はこちらです!
# 条件式がTrueのときの処理
else:
# 条件式がFalseのときの処理
条件式としてTrueまたはFalseを返すものを指定します。
その結果がTrueであれば、「if 条件式:」の次の行以降にインデントされて記述されている処理(ifブロック)を実行します。条件式の結果がFalseであれば、「else:」の次の以降にインデントされて記述されている処理(elseブロック)を実行します。
相変わらず、Pythonの記述は美しいです。
if~else文による処理の分岐の例
では、試しにif~else文を使ってみましょう。
以下コードを実行してみましょう。
import os
area = '10_アフリカ'
if os.path.exists(area):
print('フォルダ ' + area + ' は既に存在しています')
else:
print('フォルダ ' + area + ' はまだ存在していません')
「10_アフリカ」というフォルダが作業フォルダに存在しているのであれば、Shellウィンドウには以下のように出力されるはずです。
リストについてフォルダが存在していないフォルダだけ作成する
では、if~else文を活用して、リストで指定したフォルダ名のうち、作業フォルダにないフォルダだけ作成するプログラムを作ってみます。
こちらです。
import os
areas = ['10_アフリカ', '20_アメリカ', '30_アジア', '40_ヨーロッパ', '50_オセアニア']
for area in areas:
if os.path.exists(area):
print('フォルダ ' + area + ' は既に存在しています')
else:
os.mkdir(area)
if文を使ったフォルダ作成プログラムの実行結果
例えば、作業フォルダが以下の状態だったとします。つまり、「30_アジア」だけ存在していますね。
実行してみますと、作業フォルダは以下のように存在しないフォルダは作成されます。
そして、Shellウィンドウには、既に存在していたフォルダについてメッセージが表示されますね。
まとめ
今回は、Pythonで条件分岐処理をする基本としてif~else文についてお伝えしました。
これにて、フォルダが既に存在いている場合でも、エラーとならずにフォルダを作成するプログラムを実行することができるようになりました。
次回は、フォルダ名をリストではなくて、テキストファイルから与えることについて考えてみたいと思います。
どうぞお楽しみに!
連載目次:【初心者向けPython】基本の基本を学びながらフォルダ操作
非エンジニアの一般ビジネスマンの初心者向けにPythonでWindowsのファイルやフォルダを操作する簡単便利ツールの作り方を解説しながら、Pythonプログラミングの基本中の基本を学んでいくシリーズです。- Pythonで標準ライブラリのモジュールをインポートして使ってみよう
- Pythonでosモジュールのmkdir関数を使ってフォルダを作成する超簡単なプログラム
- Pythonプログラミングの基本中の基本!forループによる繰り返しの作り方
- Pythonでデータをまとめて取り扱う基本中の基本!リストの使い方とforループ
- Pythonで指定したフォルダが存在しているかどうかを調べるos.path.existsの使い方
- Pythonで条件分岐をする基本中の基本!if~else文の作り方
- Pythonでテキストファイルを開いてデータを読み込む基本中の基本
- Pythonで文字列を区切り文字や改行で分割してリスト化するsplitメソッドの使い方
- Pythonで文字列のスペース・タブ・改行を取り除くstripメソッドの使い方
- Pythonで開いたファイルのクローズを忘れやすい人のためのwith文の使い方
- Pythonでcsvファイルからデータを読み込む最初の一歩