Python でファイルを読み書きする方法

Python ではファイルを作成してデータを書き込んだり、逆にファイルからデータを読み込んだりすることができます。

Python では単なるテキストファイルにとどまらず、.csv.json.xlsxといったさまざまな形式のデータを読み書きすることができます。

この記事ではまず、基本的なテキストファイルの作成方法についてご紹介します。

他の Python 関連記事はこちらからご覧ください。

目次

ファイル操作のきほん

Python でファイルを作成するにあたっては

  1. ファイルを開く
  2. 読み書きなどの処理を行う
  3. ファイルを閉じる

この手順で進めていきます。以下の内容でmake_file.pyを作成して実行してください。

# make_file.py
# ファイルを開く
f = open('sample.txt', 'w')

# ここに処理内容を書いていく
f.write('Hello, python!\n')
f.write('Goodbye!\n')

# ファイルを閉じる
f.close()

make_file.pyと同じディレクトリ内にsample.txtができました。

Python_ファイル作成結果

中を見てみると、「Hello, python」「Goodbye!」という内容のテキストファイルができたことがわかります。

Python_ファイルの内容

ファイルを開く

open関数は2つの引数を受け取り、ファイルオブジェクト(ファイルを表すPythonのオブジェクト)を返す関数です。

1つ目のsample.txtはファイルパスです。ここでは相対パスが指定されているので、このスクリプトを実行したディレクトリの直下にファイルが作成されます。

絶対パスを指定すると、スクリプトの実行場所によらず、指定した場所にファイルを作成できます。3行目を以下のように修正して実行すると、デスクトップにsample.txtが作成されます。

f = open('C:\Users\ユーザ名\デスクトップ\sample.txt', 'w')

2つ目の引数'w'は、オープンモードといい、ファイルの開き方を指定する文字列です。'w'を指定すると「書き込むために」ファイルを開くという意味になります(ファイルが存在しない場合は新規作成してくれます)。

私たちがメモ帳でテキストファイルを開いているときは、読んだり書いたりを同時にできますが、Python でファイルを開くときは、書き込むときは書き込みモードで、読み出すときは読み込みモード('r'を指定してください)で開いてあげる必要があるので注意してください。

ファイルに書き込む

ファイルに書き込むには、ファイルオブジェクトのwriteメソッドを使います。

Python のprint関数は文末で自動的に改行してくれますが、writeメソッドは改行してくれないので注意してください。

ファイルを閉じる

ファイルは開いたら閉じてあげる必要があります。メモ帳でファイルを編集したら保存して閉じるのと同じです。

Python では、ファイルオブジェクトのcloseメソッドを呼び出すと、ファイルへの変更を反映して保存してくれます。

f.close() # ここで閉じています

ファイルを自動的に閉じるしくみ

とはいえ、処理が途中で終了してしまった場合など、closeメソッドが正しく呼ばれない場合もあります。

そんなときのために、 Python にはファイルを開いて作業したのち、自動的に閉じてくれる仕組み(with文)が準備されています。

以下のコードをwith_file.pyという名前で作成して実行してみてください。

# with_file.py
# with文でファイルを開く
with open('sample.txt', 'w') as f:
    # 中の処理
    f.write('Hello, python!\n')
    f.write('Goodbye!\n')

# with文を使用すると、f.close()と書かなくても閉じられる

with open(ファイルパス , オープンモード) as f:と記述すると、open関数の戻り値がfという変数に代入され、中のインデントされたコードブロックが実行されます。インデントされたコードブロックの処理が終わると、自動的にファイルが閉じられます。

with文を使うと、ファイルを「開いて」「閉じる」という2つの別々の処理を、一つの文でまとめて記述できるので、とても便利です。バリバリ使っていきましょう。

他の Python 関連記事はこちらからご覧ください。

(Visited 81 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次