Pythonのファイルオブジェクトの主な属性とメソッドを徹底解説
Pythonでは、open()関数を使ってファイルを開くと「ファイルオブジェクト」が返されます。このオブジェクトは、ファイルの読み書きや状態管理を行うための多数の属性とメソッドを持っています。本記事では、特によく使われるメソッドと属性について、具体例を交えながらわかりやすく解説します。
よく使われるファイルオブジェクトのメソッド
close() ― 開いたファイルを閉じます。ファイル操作が終わったら必ず呼び出し、リソースを解放しましょう。
next() ― ファイルをイテレータとして扱う際に呼び出されるメソッドです。
for line in f:のようにforループでファイルを回すとき、このメソッドが繰り返し実行され、次の行を返します。ファイル末尾(EOF)に達するとStopIterationを発生させてループを終了します。なお、Python 3では__next__()という名前に変更されています。read([size]) ― ファイルから最大
sizeバイトを読み込みます。sizeを省略すると、ファイル全体を読み込みます。readline([size]) ― ファイルから1行まるごと読み込みます。
sizeを指定すると、そのバイト数を上限として読み込みます。seek(offset[, whence]) ― C言語のstdioにある
fseek()のように、ファイルの現在位置を設定します。第2引数whenceは省略可能で、デフォルトは0(ファイル先頭からの絶対位置指定)です。その他に1(現在位置からの相対移動)、2(ファイル末尾からの相対移動)が指定できます。tell() ― stdioの
ftell()と同様に、ファイル内の現在位置(バイト単位)を返します。write(str) ― 指定した文字列をファイルに書き込みます。書き込んだ文字数(Python 3の場合は文字数、バイナリモードではバイト数)を返します。
writelines(sequence) ― 文字列のシーケンス(リストやタプルなど)をまとめてファイルに書き込みます。各行末に改行は自動的に付加されないため、必要に応じて自分で
\nを追加してください。
よく使われるファイルオブジェクトの属性
closed ― ファイルオブジェクトが閉じているかどうかを示す真偽値(bool)。
Trueならファイルはクローズ済みです。encoding ― このファイルで使用されているエンコーディング(例:UTF-8)。テキストモードでのみ意味を持ちます。
mode ― ファイルを開いたときのI/Oモード(例:
'r'、'w'、'a'など)。name ― ファイルオブジェクトが
open()によって作成された場合、そのファイル名を示します。それ以外の場合は、ファイルオブジェクトの生成元を表す何らかの文字列(例:'<stdin>')が入ります。
使用例
以下は、これらのメソッドや属性を組み合わせた簡単な例です。
f = open('sample.txt', 'r', encoding='utf-8')
print(f.mode) # 'r' が出力される
print(f.encoding) # 'utf-8' が出力される
print(f.tell()) # 現在位置(0)を出力
line = f.readline() # 1行読み込む
f.seek(0) # 先頭に戻る
text = f.read() # 全文を読み込む
f.close()
print(f.closed) # True が出力される
なお、Pythonでは with 文を使うのが推奨されています。with open('sample.txt', 'r') as f: と記述すれば、処理が終了した時点で自動的にファイルが閉じられるため、close() の呼び忘れを防げます。
-
Pythonのパッケージとは?モジュールとの違いをわかりやすく解説
Pythonにおける「パッケージ」を正しく理解するには、まず「モジュール」について知っておく必要があります。この記事では、モジュールとパッケージの基本概念、両者の違い、そして実際のインポート時の挙動について、具体例を交えながらわかりやすく解説します。 モジュールとは何か Pythonでは、任意の .py ファイルが1つのモジュールとして扱われます。モジュール名は、ファイル名から拡張子「.py」を除いたもの、すなわちそのモジュールの __name__ 属性に相当する名前になります。たとえば sample.py というファイルは、「sample」という名前のモジュールです。 パッケージとは何か
-
Pythonの関数属性とは?getattr・setattrを使った属性の設定と取得方法を解説
Pythonでは「すべてがオブジェクト」という設計思想のもと、ほぼすべてのデータに属性やメソッドが備わっています。実は関数もオブジェクトであり、他のオブジェクトと同じように属性(アトリビュート)を持つことができます。すべての関数には、組み込み属性として __doc__ が用意されています。これは関数のソースコード内に定義されたドキュメント文字列(docstring)を返す属性です。さらに、Pythonでは既存の属性を参照するだけでなく、関数に対して新しい属性を自由に追加し、後からその値を取得することも可能です。属性を操作するための組み込み関数:getattr と setattr属性の扱いには、