open関数はファイルを開き対応するファイルオブジェクトを返します。
ファイルのオープンとクローズ
ファイルは組み込みのopen関数を用いてオープンし、それに対して読み込み、書き込みを行った後、クローズするのが通常のファイル操作の手順となる。その流れを以下にまとめる。
f = open(ファイル名, モード, その他の引数) # ファイルのオープン
content = f.read() # 読み込みの例
f.write('foo') # 書き込みの例
f.close() # ファイルのクローズ
また、with文を利用することでファイルのクローズを自動的に行うことができる。
with open(ファイル名, モード, その他の引数) as f: # ファイルのオープン
content = f.read() # 読み込みの例
f.write('foo') # 書き込みの例。ブロック終了後にファイルはクローズされる
引数の説明
open
(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)の引数を設定することでどのような用途でファイルを開くかなどを指定することができる
file
これは開くファイルのパス名を与える。
mode=
ファイルが開かれるモードを指定します。
引数 | 説明 |
---|---|
‘r’ | 読み込み用に開く(デフォルト) |
‘w’ | 書き込み用に開き、ファイルを切り詰める |
‘x’ | 排他的なせいせに開く。ファイルが存在する場合失敗する。 |
‘a’ | 書き込み用に開く。ファイルが存在する場合末尾に追記 |
‘b’ | バイナリモード |
‘t’ | テキストモード |
‘+’ | 'r' ,'w' ,'a' ,'x' に付加して、ファイルを更新用にオープン |
buffering
バッファリングの方針を設定するのに使われます。
バッファリングとは、複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補ったり、通信の減速や中断に備えて専用の記憶領域に送受信データを一時的に保存しておくことです。
引数 | 説明 |
---|---|
0 | 無効 |
1 | 行単位バッファリング(テキストモードのみで有効) |
encoding
テキストモードのみ使用可能。デフォルトエンコーディングはプラットフォーム依存。
標準エンコーディング
erros
エンコードやデコードでのエラーをどのように扱うかを指定。バイナリモードでは使用不可。
引数 | 説明 |
---|---|
'strict' | ValueErrorが発生します。デフォルトのNoneと同様 |
'ignore' | エラーを無視します。 |
'replace' | 不正な形式のデータが存在した場所に置換マーカーを挿入します。 |
'surrogateescape' | 正しくないバイト列をUnicode の Private Use Area にある U+DC80 から U+DCFF のコードポイントで示します。 |
'xmlcharrefreplace' | ファイル書き込み時のみサポート。エンコーディングでサポートされない文字は、&#nnn; 形式の適切な XML 文字参照で置換されます。 |
'backslashreplace' | 不正なデータを Python のバックスラッシュ付きのエスケープシーケンスで置換します。 |
'namereplace' | サポートされていない文字を \N{...} エスケープシーケンスで置換します。 |
newline
universal newlines モードの動作を制御します。これはソースコード上の改行コードである。
引数 | 入力時 | 読み込み時 |
---|---|---|
None | ユニバーサル改行モードが有効 入力中の '\n' ,'\r' ,'\r\n' が呼び出し元に返される前に'\n' に変換される。 | すべての'\n' 文字がデフォルトの区切り文字os.linesepに変換される。 |
'' | ユニバーサル改行モードが有効になるが、行末は変換されずに呼び出し元に返される。 | 変換されない。 |
'\n' | 入力行は'\n' 文字のみ終わり、行末は変換されずに呼び出し元に返される。 | 変換されない。 |
'\r' | 入力行は'\r' 文字のみ終わり、行末は変換されずに呼び出し元に返される。 | '\n' 文字が'\r' 文字に変換される。 |
'\r\n' | 入力行は'\r\n' 文字のみ終わり、行末は変換されずに呼び出し元に返される。 | '\n' 文字が'\r\n' 文字に変換される。 |