イントロダクション
これまで、Pythonを使ってファイルに対して読み書きやコピーなどの様々な操作を行うことができました。
これらのファイル操作のいずれかを実行する際に、ファイルを開くことが最初のステップであることは明らかです。
そこで、この記事では、Pythonのopen()メソッドを使用して、ファイルを開く部分に焦点を当てたいと思います。
この記事もチェック:Pythonでcopy関数やpopen関数等を使ってファイルをコピーする方法
Pythonのopen()メソッド
open()` メソッドは、指定されたモードで特定のファイルを開き、ファイルオブジェクトを返します。
このファイルオブジェクトは、さらに様々なファイル操作を行うために使用することができます。
このメソッドを使用するためのシンタックスを以下に示します。
open ( file , mode = 'r' , buffering = - 1 , encoding = None , errors = None , newline = None , closefd = True , opener = None )
|
ここで
- file はファイル名/ディスクリプタ、
mode
はファイルを開くためのモードです。ファイルを開くために必要な基本的なパラメータは以下のとおりです。 - buffering はバッファリングポリシーを設定するためのオプションの整数です。デフォルトでは、(-1)に設定されています。
- エンコーディングは、ファイルをデコードまたはエンコードするために使用されるエンコーディングの名前です。
- errors は、エンコードおよびデコードのエラーの処理方法を指定するオプションの文字列です。注:バイナリモードでは使用できません。
- newline はユニバーサル改行モードの動作を制御します(テキストモードのみに適用されます)。改行には
None
(デフォルト),''
,'n'
,'r'
,'rn'
が使用できます。 - closefdはファイル名かファイルディスクリプタかを指定します。ファイルディスクリプタを指定した場合は False を指定します。それ以外の場合はTrue(デフォルト)。そうでない場合は、エラーが発生します。
- opener は、呼び出し可能なカスタムオープナーです。ファイルオブジェクトに指定されたファイルディスクリプタは、この
opener
を (file, flags) と共に呼び出すことで得られます。 opener はオープンされたファイルディスクリプタを返さなければなりません (opener としてos.open
を渡すと、None
を渡すのと同様の機能が働きます)。
Pythonにおけるopen()のオープニングモード
ファイルのオープンモードとその意味は以下の通りです。
モード | 説明 |
'r' |
読み込み用に開く(デフォルト) |
'w' |
書き込み用に開き、最初にファイルを切り詰めます。 |
'x' |
専用に作成するために開く、ファイルがすでに存在する場合は失敗する| |
'a' |
書き込み用にオープン、ファイルが存在する場合は末尾に追加されます。 |
'b' |
バイナリーモード |
't' |
テキストモード(デフォルト) |
'+' |
更新用にオープン(読み込みと書き込み)||。 |
ファイルを開くモードの表## Python open() の例
Pythonのopen()`メソッドの基本的な使い方がわかったところで、早速例題に入りましょう。
ここでは、open()
メソッドを使って、下図のような内容の file.txt というファイルを開いてみます。
# opening a file f = open ( 'file.txt' , 'r' ) # file object
print ( "Type of f: " , type (f))
print ( "File contents:" )
for i in f:
print (i)
f.close() # closing file after successful operation
|
以下のコードを見てください。
Type of f: < class '_io.TextIOWrapper' >
File contents:
Python Java Go C C + +
Kotlin |
結果は以下の通りです。
# opening multiple files try :
with open ( 'file1.txt' , 'r+' ) as a, open ( 'file2.txt' , 'r+' ) as b:
print ( "File 1:" )
for i in a:
print (i)
print ( "File 2:" )
for j in b:
print (j)
except IOError as e:
print (f "An Error occured: {e}" )
# file closing is not required |
ここでは、ファイル file.txt を読み取り専用(' r '
)でオープンしています。
open()メソッドはファイルオブジェクトを
f` に返します。
そして、for ループを使用してこのオブジェクトを繰り返し、ファイルの内容にアクセスしています。
その後、close()メソッドでファイルをクローズしています。
エラーを避けるために、ファイルに対して何らかの操作を行った後は、最後にファイルを閉じることが重要です。
これらのエラーは、同じファイルを再び開くときに発生する可能性があります。
複数のファイルを開く
Pythonでは、with
文、open()
メソッド、カンマ(' , '
)演算子を組み合わせることで、2つ以上のファイルを同時に開くことができます。
理解を深めるために、例を挙げてみましょう。
ここでは、2つの独立したファイル file1.txt と file2.txt を開いて、それぞれの内容を表示することを試みています。
File 1 :
John Alex Leo Mary Jim File 2 :
Sil Rantoff Pard Kim Parsons |
結果を出力すると、以下の様になります。
注:今回は使用後、ファイルを閉じていません。
その必要がないからです。
with
文は、close()
メソッドを呼び出すことで、開いたファイルが自動的に閉じられることを保証しています。
まとめ
というわけで、今日はここまでです。
ご理解いただけたでしょうか?さらに関連する質問があれば、以下のコメント欄からお気軽にどうぞ。
より詳細な情報については、参考文献のセクションに記載されているリンクを参照することをお勧めします。
参考文献
- Python open() – ドキュメント,
- Python Read File – 3 Ways You Must Know,
- Pythonのファイル書き込み。
- Pythonでファイルをコピーします。