工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

PythonファイルI/O:ファイル操作、読み書き、管理のマスター

PythonファイルI/O

明確な例とベストプラクティスで、Pythonでのファイルの開き方、読み書き、クローズを学びます。

動画:Pythonでのファイル読み書き

ファイル

ファイルはデータを永続的に格納するディスク上の名前付き場所です。RAMは揮発性であるため、プログラム実行間で情報を保持するにはファイルに頼ります。

ファイル操作の典型的な流れは:オープン → 読み書き → クローズ。

Pythonでのファイルオープン

Pythonの組み込みopen()関数はファイルオブジェクトを返し、I/O操作に使用します。関数シグネチャは:

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

重要ポイント:

モード説明
r読み取り(デフォルト)
w書き込み;新規作成または既存切り詰め
x排他的作成;存在時失敗
a追記;不在時作成
tテキストモード(デフォルト)
bバイナリモード
+読み書き両用
f = open("test.txt")           # r/rt
f = open("test.txt", "w")      # 書き込み
f = open("img.bmp", "r+b")     # 読み書きバイナリ

aは文字なので、エンコードしない限り数値97と等価ではありません。テキストファイルでは明示的にencoding='utf-8'を設定してください。

f = open("test.txt", mode='r', encoding='utf-8')

Pythonでのファイルクローズ

適切にファイルをクローズしてシステムリソースを解放します。close()メソッドはシンプルですが、コンテキストマネージャの使用が最も安全なパターンです。

with open("test.txt", encoding='utf-8') as f:
    # ファイル操作を実行
    pass

コンテキストマネージャは例外発生時でもクローズを保証します。手動でオープンする場合はtry...finallyブロックでラップしてください。

try:
    f = open("test.txt", encoding='utf-8')
    # 操作
finally:
    f.close()

Pythonでのファイル書き込み

書き込みにはw、a、xモードを使用。wは既存内容を上書き;aは保持します。

write()メソッドは文字列(バイナリならbytes)を受け取り、書き込んだ文字数を返します。

with open("test.txt", "w", encoding='utf-8') as f:
    f.write("my first file\n")
    f.write("This file\n\n")
    f.write("contains three lines\n")

行を分けるために改行文字を含めることを忘れずに。

Pythonでのファイル読み取り

rモードでオープン。read()メソッドはオプションのsize引数を取り、省略時はEOFまで読み取ります。

f = open("test.txt", "r", encoding='utf-8')
print(f.read(4))  # 'This'
print(f.read(4))  # ' is '
print(f.read())   # 残り全体
f.close()

seek()でカーソル移動、tell()で現在位置取得:

print(f.tell())  # 現在位置
f.seek(0)        # 先頭に戻る
print(f.read())  # 全読み取り

行を効率的にイテレーション:

for line in f:
    print(line, end='')

あるいはreadline()とreadlines()で行単位アクセスも可能。

Pythonファイルメソッド

テキストモードでの最も一般的なファイルメソッドの簡潔なリファレンス:

メソッド説明
close()ファイルを閉じる
detach()基盤のバイナリバッファを分離
fileno()ファイルディスクリプタを返す
flush()書き込みバッファをフラッシュ
isatty()ストリームがインタラクティブかチェック
read(n)最大n文字読み取り;NoneでEOFまで
readable()ストリームが読み取り可能か
readline(n=-1)1行読み取り、最大n文字
readlines(n=-1)行のリストを返す、最大n文字
seek(offset, from_=SEEK_SET)カーソルをfrom_(先頭、現在、末尾)からoffset移動
seekable()ランダムアクセスをサポートするか
tell()現在のカーソル位置を取得
truncate(size=None)ファイルをsizeバイトにリサイズ
writable()ストリームが書き込み可能か
write(s)文字列sを書き込み;書き込んだ文字数を返す
writelines(lines)文字列のイテラブルを書き込み

Python

  1. C言語入出力(I/O)マスター:scanf()とprintf()徹底解説
  2. C言語ファイルI/O完全ガイド:作成、オープン、管理の実践
  3. C#ファイルI/O:Stream、FileStream、StreamReader/Writerによる読み書き
  4. Python データ型マスター: 実践ガイド
  5. Python 演算子完全マスター: 包括的ガイド
  6. Pythonリスト操作:作成、アクセス、変更、高度なテクニック
  7. Python辞書完全ガイド:作成、操作、高度なテクニック
  8. PythonファイルI/O:ファイル操作、読み書き、管理のマスター
  9. Pythonでファイル・ディレクトリの存在確認:実践ガイド
  10. Python JSON:エンコード、デコード、ファイル処理の実践ガイド
  11. PythonファイルI/O:入出力操作をマスターする