Repolode
Tinche

Tinche/aiofiles

ブロッキングするローカルファイルのIO、os、tempfile、pathlibの操作をラップし、イベントループを止めずにスレッドプールで実行できるasyncio対応ライブラリです。

スター
3,270
フォーク
182
未解決の Issue
66
最終コミット
4 日前

これは何?

aiofilesは、asyncioアプリケーションでローカルファイルを読み書きするためのPythonライブラリです。通常のファイルIOは実行中のスレッドをブロックするため、イベントループが停止することがあります。aiofilesは、read、write、seekなどのメソッドがコルーチンになった非同期ファイルオブジェクトを提供し、実際の処理をスレッドプールのexecutorに委譲します。

APIは組み込みのopen()によく似ているため、既存のコードを簡単に移行でき、行の反復にはasync forを使えます。また、tempfileモジュール、ファイルやディレクトリを操作するos関数、ファイルシステムのメソッドをawaitできるpathlib.Pathの代替も、非同期ラッパーとして提供します。

pip install aiofilesでインストールできます。ライセンスはApache-2.0で、テストはtoxで実行します。

主な機能

  • 01組み込みのopen()に似たAPIを持つ非同期ファイルオブジェクト
  • 02ブロッキングするファイル操作をスレッドプールのexecutorで実行
  • 03async forによるファイル行の非同期イテレーション
  • 04tempfileと、ファイル操作に使う一般的なos関数の非同期ラッパー
  • 05ファイルシステムのメソッドをawaitできる非同期版pathlib.Path

ユースケース

  • asyncioのWebサーバーで、リクエストをブロックせずにログやデータファイルを読み書きする
  • 非同期タスク内で一時ファイルや一時ディレクトリを作成する
  • pathlib形式の呼び出しでディレクトリツリーを非同期にたどる

クイックスタート

  1. 1

    PyPIからaiofilesをインストールする

    pip install aiofiles
  2. 2

    aiofiles.openでファイルを非同期に開き、読み込みをawaitする

使う前に知っておきたいこと

  • ファイル操作はスレッドプールで実行されるため、OSレベルで真にノンブロッキングではありません。

トピック

よくある質問

aiofiles とは?
ブロッキングするローカルファイルのIO、os、tempfile、pathlibの操作をラップし、イベントループを止めずにスレッドプールで実行できるasyncio対応ライブラリです。 aiofilesは、asyncioアプリケーションでローカルファイルを読み書きするためのPythonライブラリです。通常のファイルIOは実行中のスレッドをブロックするため、イベントループが停止することがあります。aiofilesは、read、write、seekなどのメソッドがコルーチンになった非同期ファイルオブジェクトを提供し、実際の処理をスレッドプールのexecutorに委譲します。
aiofiles は無料で使えますか?ライセンスは?
aiofiles は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
aiofiles は今もメンテナンスされていますか?
活発にメンテナンス中。aiofiles の最終コミットは 2026年10月21日 です。
aiofiles は何に使えますか?
asyncioのWebサーバーで、リクエストをブロックせずにログやデータファイルを読み書きする 非同期タスク内で一時ファイルや一時ディレクトリを作成する pathlib形式の呼び出しでディレクトリツリーを非同期にたどる
aiofiles のインストール方法は?
PyPIからaiofilesをインストールする: pip install aiofiles aiofiles.openでファイルを非同期に開き、読み込みをawaitする
aiofiles はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Tinche/aiofiles

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト