文法・環境 標準ライブラリ・モジュール

【python】ファイル・フォルダの作成【open関数、osモジュール、pathlibモジュール】

pythonで、ファイル・フォルダを作成する方法について、紹介します。

大きく分けて、pythonの組み込み関数のopen関数、標準ライブラリのosモジュール、pathlibモジュールで作成する方法について紹介します。

本記事では、下記の内容を紹介しています。

この記事で分かること

■ファイルの作成方法【open関数】

  • 「open関数」でファイルを作成する方法
  • 「open関数」と「with文」でファイルを作成する方法
  • ファイルが存在しない場合に、ファイルを作成する(上書きしない)

■ファイルの作成方法【pathlibモジュール】

  • pathlibモジュールのtouchメソッドで空ファイルを作成する方法

■フォルダの作成方法【osモジュール】

  • mkdir関数でフォルダを作成
  • makedirs関数でフォルダを作成

■フォルダの作成方法【pathlibモジュール】

  • pathlibモジュールのmkdirメソッドでフォルダを作成する方法

スポンサーリンク

ファイルの作成方法【open関数】

ファイルの作成方法について紹介します。

はじめに、pythonの組み込み関数である、open関数を用いてファイルを作成する方法を紹介します。

open関数の基本的な指定方法は下記のとおりです。

open関数の基本

ファイルオブジェクト = open( ファイルパス, モード, エンコーディング )

モードと、エンコーディングは省略可能で、用途によって指定します。

モードには下記の種類があります。

モードモードの説明
'r'読み込み用に開く。
'w'書き込み用に開く。既存ファイルがある場合は上書き。
'a'書き込み用に開く。既存ファイルがある場合は追記。
'x'書き込み用に開く。既存ファイルがある場合はエラー。
'+'更新用に開く。読み書き両方を指定。
't'テキストモード。
'b'バイナリモード。
'U'ユニバーサル改行モード。

今回は、新しくファイルを作成しますので、書き込みモードである 'w' 、 'a' を使用します。

書き込みモードでファイルを開く場合、指定したパスのファイルが存在しない場合は新規にファイルを生成します。

「open関数」でファイルを作成

open関数でファイルを作成する際の、もっともシンプルな記述を紹介します。

### open関数でファイルを作成
import os

dir_path = r'test'
file_name = 'xxx.txt'

new_file_path = os.path.join(dir_path, file_name)
print(new_file_path)
# test\xxx.txt

f = open(new_file_path, mode='w')
f.write('test')
f.close()

open関数を用いて、ファイルを 'w' モードで開いています。
指定したパスのファイルは存在しないため、新規にファイルが作成されます。

ファイルオブジェクトのwriteメソッドで、ファイルに "test" と書きこんでいます。

最後に、ファイルオブジェクトのcloseメソッドで、ファイルを閉じています。

ファイルを閉じないと、予期せぬエラーの原因になります。

次に紹介するwith文を用いると、ファイル使用後に自動的にファイルを閉じてくれるため、閉じ忘れを防ぐことができます。

「open関数」と「with文」でファイルを作成

open関数とwith文を組み合わせて、ファイルを作成する方法を紹介します。

with文を用いることで、ファイルオブジェクト使用後に自動的にファイルを閉じることができます。

with文の基本的な記述方法は、下記のとおりです。

with文の書き方

with open( ファイルパス, モード, エンコーディング ) as 変数名 :
処理

open関数の使い方は前述と同様です。
ファイルオブジェクトの変数名は、「as 変数名」の形で指定します。

### open関数とwith文でファイルを作成
import os

dir_path = r'test'
file_name = 'xxx.txt'

new_file_path = os.path.join(dir_path, file_name)
print(new_file_path)


with open(new_file_path, mode='w') as f :   
    f.write('test')

ファイルが存在しない場合に、ファイルを作成する(上書きしない)

指定したファイルパスが存在している場合、'w'モード、'a'モードの、両モードともファイルが更新されてしまいます。

既存のファイルがある場合に、"上書き"、"追記"とも行われないようにするために、ファイルの存在確認と組み合わせる例を紹介します。

以下、ファイルの存在確認後、ファイルを作成するサンプルコードです。

### ファイルの存在確認後、ファイルを作成
import os

dir_path = r'test'
file_name = 'xxx.txt'

new_file_path = os.path.join(dir_path, file_name)
print(new_file_path)
# test\xxx.txt

if not os.path.exists(new_file_path) :
    with open(new_file_path, mode='w') as f : 
        f.write('test')

> if not os.path.exists(new_file_path) :

ファイルが存在しない場合、条件式がTrueになり、if文の中の処理が行われます。

スポンサーリンク

空のファイルを作成

補足的な内容ですが、空のファイルを作成する方法を紹介します。

ファイルへの書き込み部分を、 f.write('') とするだけで、空のファイルになります。

### 空のファイルを作成
import os

dir_path = r'test'
file_name = 'xxx.txt'

new_file_path = os.path.join(dir_path, file_name)
print(new_file_path)
# test\xxx.txt

if not os.path.exists(new_file_path) :
    with open(new_file_path, mode='w') as f : 
        f.write('')

ファイルの作成方法【pathlibモジュール】

次に、pathlibモジュールでファイルを作成する方法を紹介します。

pathlibモジュールは、python3.4から追加された、ファイル・ディレクトリのパスを、オブジェクトとして操作できるモジュールになります。

標準モジュールに含まれているため、pip等でのインストール不要で使用できます。

pathlibモジュールでファイルを作成するには、touchメソッドを使用します。

以下、pathlibモジュールで空のファイルを作成するサンプルコードです。

### pathlibモジュールで空のファイルを作成
import pathlib

p_dummy = pathlib.Path(r'test\xxx.txt')

p_dummy.touch()

ファイルが既に存在している場合には、空ファイルで上書きされることはありません。

pathlibモジュールの使用方法については、下記の記事で紹介しています。

pathlibモジュールの使い方

スポンサーリンク

フォルダの作成方法【osモジュール】

次に、フォルダを作成する方法について紹介します。

osモジュールには、フォルダを作成する関数が2つ用意されています。

  • os.mkdir()
  • os.makedirs()

mkdir関数でフォルダを作成

はじめに、mkdir関数を用いてフォルダを作成する方法を紹介します。

以下、サンプルコードです。

### mkdir関数でフォルダを作成
import os

dir_path = r'test'
new_dir_name = 'new_dir'

new_dir_path = os.path.join(dir_path, new_dir_name)
print(new_dir_path)
# test\new_dir

os.mkdir(new_dir_path)

mkdir関数を使用した場合、指定したパスのフォルダが既に存在する場合は、FileExistsErrorとなります。

エラーを避ける場合は、if文での分岐処理や、try文での例外処理を使用します。

以下、if文を用いて、FileExistsErrorを回避するサンプルコードです。

### if文で、FileExistsErrorを回避
import os

dir_path = r'test'
new_dir_name = 'new_dir'

new_dir_path = os.path.join(dir_path, new_dir_name)



if not os.path.isdir(new_dir_path) :
    os.mkdir(new_dir_path)

以下、try文を用いて、FileExistsErrorをキャッチするサンプルコードです。

### try文で、FileExistsErrorをキャッチ
import os

dir_path = r'test'
new_dir_name = 'new_dir'

new_dir_path = os.path.join(dir_path, new_dir_name)

try :
    os.mkdir(new_dir_path)
except FileExistsError:
    pass

makedirs関数でフォルダを作成

次に、 makedirs関数を用いてフォルダを作成する方法を紹介します。

makedirs関数を用いると、最深部のフォルダまで再帰的に作成することができます。

以下のサンプルコードの動作環境では、「new_dir1」、「new_dir2」どちらも存在していない状態ですが、
makedirs関数を用いて、深い階層のフォルダまでいっきに作成しています。

### makedirs関数でフォルダを作成
import os

new_dir_path = r'test\new_dir1\new_dir2'

os.makedirs(new_dir_path, exist_ok=True)

makedirs関数の引数として、「exist_ok=True」を指定することで指定したパスにすでにフォルダが存在した場合にも、FileExistsErrorを回避することができます

フォルダの作成方法【pathlibモジュール】

pathlibモジュールで、フォルダを作成する方法を紹介します。

pathオブジェクトのmkdirメソッドを用いることで、フォルダを作成することができます

引数として、「parents=True」とすることで、中間フォルダまでまとめて作成できるようになり、
「exist_ok=True」とすることで、すでにフォルダが存在した場合にも、FileExistsErrorを回避できます

### pathlibモジュールで、フォルダを作成
import pathlib

p_dummy = pathlib.Path(r'test\new_dir1\new_dir2')

p_dummy.mkdir(parents=True, exist_ok=True)

スポンサーリンク

まとめ

pythonで、ファイル・フォルダを作成する方法について紹介しました。

ファイルの作成は、ファイル操作の基本中の基本なので、open関数、osモジュール、pathlibモジュールなどの基本的な使用方法と併せて覚えておくようにしましょう。

スポンサーリンク

スポンサーリンク

-文法・環境, 標準ライブラリ・モジュール
-,