標準の型ヒントを使ってAPIを構築できるPython製Webフレームワーク。自動バリデーション、OpenAPIドキュメント、高いパフォーマンスを備えています。
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
PyPIからaiofilesをインストールする
pip install aiofiles - 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 の数値は毎日更新されます。
関連プロジェクト
Redisまたはインメモリストレージを利用し、固定ウィンドウ、スライディングウィンドウ、トークンバケット、リーキーバケット、GCRAに対応するPythonレート制限ライブラリ。
標準ライブラリを拡張する230以上のユーティリティを備えた、依存関係のない純粋なPythonライブラリ。
Telegram Bot APIを扱う純粋なPython製の非同期ラッパー。telegram.extの高水準クラスでボットを構築できます。
curlベースのPython HTTPクライアント。ブラウザーのTLS、JA3、HTTP/2フィンガープリントを偽装し、ブロックを回避できます。
Pythonで非同期WebサービスやAPIを構築するための、軽量なASGIフレームワーク兼ツールキット。