この章では、ファイルに記入したフォルダ名を読み取り、複数のフォルダを一括で作成する方法について解説します。
1.フォルダを作成してみよう
1.フォルダの作成について
Pythonによるフォルダの作成には、「os.mkdir」か「os.makedirs」を使用します。ただし、基本的に「os.makedirs」を使用できれば問題ないため、「os.makedirs」について詳しく解説します。
※「os.mkdir」は制約が多く、使いにくい。
では、下のコードを保存し、実行してみてください。
import os os.makedirs('outfolder')
すると、「outfolder」というフォルダができたと思います!このように、フォルダを作成するには、「os.makedirs(‘フォルダ名’)」で作成することができます。
※この時、ライブラリである「os」をインポートするのを忘れないように!
そして、フォルダの中にフォルダを作ることもできます。下のコードを実行してみてください。
import os os.makedirs('outfolder1\outfolder2')
すると、「outfolder1」というフォルダの中に「outfolder2」というフォルダができたと思います。
このように、フォルダの中にさらにフォルダを作りたい場合、Macは「/」(スラッシュ)、Windowsは「\」(バックスラッシュ)を使って繋ぐことで、作成できます。
※「mkdir」では、このフォルダの中にさらにフォルダを作るといった操作ができません。
2.フォルダが存在する場合のエラー回避
次に、最初のコードをもう一度実行してみましょう。念のため下に再度載せておきます。
import os os.makedirs('outfolder')
すると、下のように「既に存在するファイルを作成することができません」というエラーが生じてしまいます。
このエラーを回避するには、「os.makedirs」のオプションである「exist_ok」というものを使います!
これを用いて、「exist_ok=True」とすることで、このエラーを回避できます。では下のようにコードを変更し、実行してみてください。
import os os.makedirs('outfolder', exist_ok=True)
すると、何度実行してもエラーが出ませんね。これでフォルダが存在する場合でもエラーを回避することができました!
※ちなみに、「mkdir」だと、このエラーを回避するには「条件分岐」のifをわざわざ作ったりする必要があり、めんどくさいです。
2.ファイルからフォルダ名を読み取って作成
いよいよこの章のポイントである「ファイルからフォルダ名を読み取っての作成」を解説したいと思います。
といっても、基本的には第4章の「ループ処理」、第11章の「テキストファイルの読み込み」、それと今回の「フォルダ作成」を組みわせたものとなります。
では、まず読み取るフォルダ名を記入したテキストファイルを作成します。下のように記入したテキストファイルを「input.txt」という名前で保存してください。
out1 out2 out3
次に、同じ場所に下のコードを保存し、実行してください。
import os f = open('input.txt', 'r', encoding='utf-8') data = f.readlines() f.close() for name in data: name = name.strip() os.makedirs(name, exist_ok=True)
すると下のように「out1」、「out2」、「out3」という3つのフォルダができましたね!
今回は少しコードが複雑に見えるので、復習も兼ねて丁寧に解説していきます。
まず1行目は、「os」というライブラリを使用するためにインポートする、という処理になります。
import os
次に2行目ですが、先ほど作成した「input.txt」というファイルを「読み取りファイル」として読み込んでいます。ちなみに、「encoding=’utf-8’」により日本語にも対応させています。
f = open('input.txt', 'r', encoding='utf-8')
3行目は、「readlines」を使い「input.txt」を読み込んで「data」という変数に入れる、という処理です。ちなみに、「readlines」を使うことで行ごとに「list」として値を取得できましたね。
data = f.readlines()
4行目は、開いたテキストファイルを閉じています。開いて使用し終わったら必ず閉じる、と解説しましたね。
f.close()
さて、最後に「ループ処理」を行っている5~7行目ですが、まず5行目は「data」に入っているデータを一つずつ「name」に入れてループを回す、という処理になります。
for name in data:
そして、6行目ですが、ここでdataの中身を確認すると下のように改行コード「\n」が入っていることが分かります。そこで、「strip()」を使って改行コードを除去する、といった処理を行っています。
そして最後に「os.makedirs」を用いてフォルダを作成すれば完成です!
name = name.strip() os.makedirs(name, exist_ok=True)
このように、今まで学んできた「ループ処理」や「ファイルの読み込み」等と組み合わせることで、いろいろな処理ができるようになります!
3.まとめ
今回は、ファイルに記入したファイル名を読み取り、複数のファイルを作成する方法について解説しました。ポイントをまとめると以下のものです。
- Pythonによるフォルダの作成には「os.mkdir」か「os.makedirs」を使う
- 「os.makedirs」の方が制約が少なく便利なのでこちらを使おう
- 「os.makedirs(‘フォルダ名’)」でフォルダ作成
- フォルダの中にさらにフォルダを作りたい場合、Macは「/」(スラッシュ)、Windowsは「\」(バックスラッシュ)を使って繋ぐ
- 「exist_ok=True」とすることで、ファイルが既にある場合のエラー回避
今回解説したことを使えば、大量にフォルダを作成する必要が出たときにとても便利です!今までの内容を理解していればそこまで難しくないので、しっかり使えるようになりましょう!
また、このサイトでは初心者の方向けに「プログラミングのお勧め学習法」も紹介していますので、気になった方はそちらもご覧いただけると幸いです。
コメント