ファイルの読み書き
read_textとwrite_textを使用します
「ファイルの読み書き」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
pathlibによるファイルI/O
pathlibのパスを使うと、単純なケースでは明示的にopen()を呼び出さなくても、ファイルを直接読み書きできます。read_text、write_text、read_bytes、write_bytesで一般的な処理に対応できます。
write_text
write_text()は文字列をファイルに書き込みます。必要に応じてファイルを作成し、既存の内容があれば置き換えます。書き込んだ文字数を返します。
from pathlib import Path
p = Path('greeting.txt')
n = p.write_text('Hello, pathlib!')
print('wrote', n, 'characters')read_text
read_text()はファイルを開いてすべての内容を読み取り、ファイルを閉じたうえで、全体の内容を文字列として返します。
from pathlib import Path
p = Path('greeting.txt')
p.write_text('Hello, pathlib!')
content = p.read_text()
print(content)手動で閉じる必要はありません
これらのヘルパーがファイルのオープンとクローズを行うため、1回だけ読み書きする場合にwith open(...)ブロックを書く定型コードを省けます。
from pathlib import Path
p = Path('notes.txt')
p.write_text('line one')
print(p.read_text())エンコーディングの指定
encoding引数を渡してテキストのエンコーディングを制御します。移植性を考えると、UTF-8を明示的に指定するのが安全です。
from pathlib import Path
p = Path('uni.txt')
p.write_text('cafe resume', encoding='utf-8')
print(p.read_text(encoding='utf-8'))バイト列の操作
バイナリデータにはwrite_bytes()とread_bytes()を使います。これらは文字列ではなくbytesオブジェクトを扱います。
from pathlib import Path
p = Path('data.bin')
p.write_bytes(b'\x00\x01\x02')
print(p.read_bytes())追記と高度なモード
1回だけ使うヘルパーは常に既存の内容を上書きします。追記やストリーミングを行う場合は、Pathでopen()を呼び出し、withブロックで使える通常のファイルオブジェクトを取得します。
from pathlib import Path
p = Path('log.txt')
p.write_text('start\n')
with p.open('a') as f:
f.write('more\n')
print(p.read_text())1行ずつ読み取る
テキスト全体を読み取ってから行に分割するか、パスを開いて反復処理します。小さなファイルでは、read_text()の結果を分割する方法が最も簡単です。
from pathlib import Path
p = Path('multi.txt')
p.write_text('a\nb\nc\n')
for line in p.read_text().splitlines():
print('line:', line)親ディレクトリの作成
親ディレクトリが存在しないと、書き込みは失敗します。まず親ディレクトリに対してmkdir(parents=True, exist_ok=True)を使い、ディレクトリの階層を作成します。
from pathlib import Path
p = Path('out/sub/file.txt')
p.parent.mkdir(parents=True, exist_ok=True)
p.write_text('done')
print(p.read_text())ファイルの削除
unlink()でファイルを削除します。missing_ok=Trueを渡すと、ファイルがすでに削除されていてもエラーを回避できます。
from pathlib import Path
p = Path('temp.txt')
p.write_text('bye')
print(p.exists())
p.unlink(missing_ok=True)
print(p.exists())読み取り、変換、書き込み
ファイルを読み取り、そのテキストを変換してから書き戻すのは、よく使われるパターンです。pathlibを使えば、これをすっきりと3行で実行できます。
from pathlib import Path
p = Path('caps.txt')
p.write_text('hello world')
p.write_text(p.read_text().upper())
print(p.read_text())クイックチェック
ファイルがすでに存在する場合、Path('a.txt').write_text('hi')は何をしますか?
まとめ
pathlibを使ってファイルを読み書きする方法を学びました。
write_textとread_textは、ファイル全体を対象とする文字列のI/Oを処理します。write_bytesとread_bytesは、バイナリデータを処理します。- 追記やストリーミングには
open()を使います。 mkdirで親ディレクトリを作成し、unlinkでファイルを削除します。
よくある質問
「ファイルの読み書き」レッスンは無料ですか?
はい。「ファイルの読み書き」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「ファイルの読み書き」で何を学びますか?
read_textとwrite_textを使用します ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ファイルの読み書き」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Pathオブジェクト
- ファイルの読み書き
- globと反復処理
- パスの操作