0Pricing
Python Academy · レッスン

ファイルの読み書き

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Pathオブジェクト
  2. ファイルの読み書き
  3. globと反復処理
  4. パスの操作
← Python Academyに戻る