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 でファイルを開く際のモードや方法についてご説明しました。