Python でファイルを開く

ここでは Python でファイルを開く際のモードや方法についてご説明します。

Python でファイルを開く時のモード

Python でファイルを読み書きするには、まず open() 関数を使ってファイルを開きます。

open() 関数を使う時は次のような引数が指定でき、必須なのは file(ファイルパス)だけで、後、よく指定する引数は mode です。

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)


mode には次のようなものがあります。

mode内容
rファイルを読み込み用に開く。ファイルが存在しなければエラー。
wファイルを書き込み用に開き中身を削除する。ファイルが存在しなければ作成。
aファイルを書き込み用に開き末尾に追記する。ファイルが存在しなければ作成。
xファイルを排他的に生成し書き込み用に開く。ファイルが存在する場合はエラー。
tテキストモード
bバイナリモード
+読み書きモード

次のようにモードを指定しなければ、デフォルトは rt (読み込み専用のテキストモード)です。

open("test1.txt")

r+ のように指定した時は、読み書きできる状態でファイルを開き、ファイルの中身は削除されず、書き出しの位置はファイルの先頭になります。


ファイルを開く時は with 文を使う

ファイルを open() する際には、次のように with 文を使って開くのがおすすめです。

with open("ファイルパス") as エイリアス名:
    [ファイルオブジェクトを使った処理のコードブロック]

with 文を使って open しておくと、コードブロックが終わってファイルがいらなくなったら、Python のインタプリタが自動的にファイルを close してくれます。

ファイルを close() するのを忘れてリソースを解放しないでいたり、ファイルが壊れたりすることがないので便利です。

また、処理中に例外が起こった時もファイルをちゃんと close してくれます。


ファイルパスの指定について

Python でファイル操作をする時に、open() 関数や、その他ファイル操作用の関数にファイルパスを渡しますが、そこでファイル名だけを指定すると、現在実行しているファイルと同じディレクトリを探します。

他のディレクトリにあるファイルを開きたい時は、そのファイルへのパスを指定する必要があります。


ファイルパスの指定は相対パスでも絶対パスでも大丈夫です。

相対パスというのは、現在のディレクトリから見たパスの指定の仕方で、例えばひとつしたの dir1 というディレクトリにある test.txt ファイルであれば、"dir1/test.txt" のように指定します。

絶対パスというのは、現在のディレクトリにかかわらず、ルートとなるディレクトリーからのパスです。

例えば Mac では "/Users/user1/temp/dir1/test.txt" のような感じです。

Windows では "C:/temp/dir1/test.txt"、"C:\\temp\\dir1\\test.txt"、または r"C:\temp\dir1\test.txt" のようになります。


ちなみに、現在のディレクトリ(current working directory)を確認したい時には、次のように取得できます。

import os

print(os.getcwd())

私の環境では、実行結果は次のようになりました。

/Users/user1/Src/Python

以上、Python でファイルを開く際のモードや方法についてご説明しました。

© 2024 やさしい Python 入門