Pythonのopen関数でファイル操作の基本(作成、書込、保存)のイメージ画像

Pythonのopen関数でファイル操作の基本(作成、書込、保存)

  • 公開日:2018/12/05
  • 更新日:2019/01/29
  • 投稿者:n bit

Pythonの組み込み関数『open』関数を利用したファイル操作の基本を解説。open関数の基本的な知識の習得と新規ファイルの作成、書き込み、保存作業が行えるようになります。

  • Python

この記事は約 分で読めます。(文字)

open関数とは

open関数はPythonの組み込み関数の1つでファイルの操作に利用します。新規ファイルの作成や書き込み、読み込み、追記、保存等の作業を行うことができます。

open関数の主な用途

  • ファイルの作成、書き込み、読み込み、追記、保存等

open関数の基本的な使い方

それでは基本的なopen関数の使い方を見ていきましょう。

新規ファイルの作成、書き込み、保存までの基本的な流れは下記の3行コードになります。

f = open('test.txt', 'w', encoding='utf-8')

f.write('入力したい文章')
f.close()

実行してみて新規ファイル『test.txt』が作成されることを確認しましょう。

open関数で新規ファイル作成

テキストファイルを開くと書き込み用に用意した『入力したい文章』が保存されていることが確認できます。

open関数で新規ファイル作成内容

1行ずつコードの内容を詳しく見ていきましょう。

open関数を使った新規ファイルの作成

open関数を使った新規ファイルの作成は下記のようにコマンド入力します。

  • open(ファイル名, モード、エンコーディング)
f = open('test.txt', 'w', encoding='utf-8')

ファイル名の指定

open関数の引数には最初に新規作成するファイルのファイル名を渡します。今回はファイル名『test.txt』です。拡張子まで入力しておきましょう。

ファイルの開き方のモード指定

2つ目の引数『w』はファイルの開き方のモード指定です。open関数に用意されているモード一覧は下記の表をご参照ください。

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

書き込みモード『w』に指定することで既存ファイルがない場合は新規のファイルが自動的に作成されます。もし既にファイルが存在していた場合は上書きされます。

エンコーディング指定(encoding)

3つ目の引数はエンコーディングを指定します。必須ではありませんが後々の操作でファイルのエンコーディング判別をしやすくしトラブルを少なくするため普段からエンコーディングを指定しておくのがお勧めでしょう。

今回の指定エンコーディングは『utf-8』です。

書き込み作業をこの後行うためopen関数を変数に渡してファイルオブジェクトとしてインスタンス化しています。

open関数を使ったファイルの書き込み

先ほど作成した新規ファイルにデータを書き込むにはファイルオブジェクトのwriteメソッドを利用します。

コードの記述方法は以下の通りです。

  • ファイルオブジェクト.write(書き込みたいテキスト)
w_text = '''入力したい文章入力したい文章入力したい文章入力したい文章

入力したい文章入力したい文章入力したい文章入力したい文章
'''

f.write(w_text)

最初のサンプルと違い複数行の文章を書き込むため、書き込みたいテキストを変数に渡しwriteメソッドの引数に指定しました。

print関数を利用したファイルへの書き込み

writeメソッドを使わずprint関数で作成したファイルにテキストを書き込むこともできます。

print関数を利用する場合は下記のようにprint関数の最後にfileでopen関数のインスタンスを指定しましょう。

  • print(書き込みたい文章、file=ファイルオブジェクト)
f = open('test2.txt', 'w', encoding='utf-8')


w_text = '''入力したい文章入力したい文章入力したい文章入力したい文章
入力したい文章入力したい文章入力したい文章入力したい文章
'''

print(w_text, file=f)

f.close()

print関数を利用することでprint関数の処理をそのまま使用できます。例えば以下のように複数のテキストを繋げて1度に出力したり間や行末処理を指定などです。

print('入力したい文章1', '入力したい文章2', '入力したい文章3', sep='|', end=';', file=f)

出力結果

入力したい文章1|入力したい文章2|入力したい文章3;

通常はwriteメソッドを利用しますがprint関数を利用する方法も覚えておくと便利でしょう。

作成書き込みしたファイルのclose作業

open関数を利用したファイルの作成や書き込み作業行った後は必ずclose処理が必要となります。コードの記述方法は以下の通りです。

  • ファイルオブジェクト.close()
f.close()

テキストエディタなどを利用した時も必ず最後に作業ファイルをクローズしますが考え方はそれと同じです。closeしてい場合はメモリ上にファイルが配置されたままになりますので実行処理の負担となってしまいます。

必ず最後にclose処理を忘れないにしましょう。

今日のdot

今回はopen関数を利用した新規ファイルの作成や書き込み保存といったファイル操作の基本について解説しました。

f = open('test.txt', 'w', encoding='utf-8')

f.write('入力したい文章')
f.close()

open関数は最後にclose処理を必ず行う必要がありましたが後に学習するwithステートメントを利用することでclose処理を省いた記述を行うことができます。

コードの記述量を減らしclose処理の書き忘れもなくなりますので通常の利用時にはそちらの書き方を利用するのがお勧めです。