.PKL

PKL ファイル

Python Pickle Serialized Object
質問する
クイック回答

PKLファイルは、ほぼ間違いなく Python Pickle ファイルです。これは、トレーニング済みの ML モデル、データセット、辞書などの Python オブジェクトのバイナリ・スナップショットです。Python の pickle モジュールで開きます。信頼できないソースからの PKL ファイルは絶対に開かないでください。Pickle はロード時に任意のコードを実行する可能性があります。

開発元: Python Software Foundation (Guido van Rossum, original pickle module) カテゴリ: データファイル MIME: application/octet-stream
対応OS Windows macOS Linux
関連: .PKPASS · .DAT · .JSON · .RIS

このページの内容

19k+ 個の拡張子を索引済み
最終確認日:Aug 2, 2026

ファイルの種類がわかりませんか?

ファイルを識別ツールにドロップしてください。最初の数バイトを読み取って形式を特定します。

ファイルを識別する

PKL ファイル形式とは?

.pkl ファイルには、Python 標準ライブラリの pickle モジュールを使用してシリアル化された Python オブジェクトが含まれています。Pickling(ピクリング)は、辞書、リスト、クラス・インスタンス、NumPy 配列、トレーニング済みの機械学習モデルなど、ほぼすべての Python データ構造を、ディスクに保存して後で pickle.load() で復元できるバイト・ストリームに変換します。

この形式は、スタックベースの Pickle Virtual Machine (PVM) を使用します。これは、実行されると元のオブジェクトを再構築するシングルバイト・オペコードのストリームです。プロトコル・バージョンは、プロトコル 0(テキストベースのオペコード、Python 1.2)からプロトコル 5(Python 3.8+、PEP 574、大きな NumPy 配列用の帯域外バッファをサポート)まであります。プロトコル 4(マジックバイト 80 04 95)は、Python 3.8-3.11 におけるデフォルトです。固定されたスキーマはなく、バイト・ストリームの構造はシリアル化されるオブジェクトによって完全に決定されます。

現代における主な用途は、scikit-learn、PyTorch(torch.save は内部で pickle をラップしています)、XGBoost からのトレーニング済み ML モデルの保存、およびコストの高い計算結果のキャッシュです。大きな NumPy 配列の場合は、メモリマッピングをサポートしている joblib ライブラリ(これも内部で pickle を使用)が好まれます。

セキュリティ警告: 信頼できないソースから .pkl ファイルをロードすると、任意の Python コードが実行される可能性があります。より安全な代替手段として、単純なデータには .json、表形式のデータには HDF5 や Parquet、ML モデルには ONNX や safetensors があります。.pkl と .pickle 拡張子は完全に互換性があります。

セキュリティと安全性

リスク: HIGH

Python Pickle は、ロード中に(__reduce__ / REDUCE オペコードを介して)任意のコードを実行できます。悪意のある .pkl ファイルはコード実行の攻撃ベクトルとなるため、実行ファイルと同様に扱ってください。完全に信頼できるソースからの .pkl ファイルのみをロードしてください。ML モデルの共有には、ロード時にコードを実行できない safetensors (HuggingFace) や ONNX 形式を推奨します。pickle のドキュメントには «The pickle module is not secure.»(pickle モジュールは安全ではありません)と明記されています。

形式の詳細

概要
正式名称Python Pickle Serialized Object別名 Pickle file, .pkl file
開発元Python Software Foundation (Guido van Rossum, original pickle module)登場時期 1995 (Python 1.2, original pickle module)
MIME タイプapplication/octet-stream
タイプバイナリ・シリアル化 Python オブジェクト・ストリーム
この拡張子は以下でも使用されています…
  • Microsoft Exchange Migration Wizard Packing List - レガシーな Microsoft Exchange 移行ツールがパッキングリストに .pkl を使用していましたが、Python の pickle とは全く無関係です。
マジックバイト ・ ファイルシグネチャ
オフセット
000102
16進数
800495
ASCII
···
プロトコル 4: 0x80 0x04 0x95 (最も一般的、Python 3.4+)。プロトコル 3: 0x80 0x03 (Python 3.0-3.3)。プロトコル 2: 0x80 0x02 (Python 2.3+)。プロトコル 0/1: マジックヘッダーなし(テキスト/バイナリ・オペコード、'\x80' は不在)。プロトコル 5: 0x80 0x05 (Python 3.8+)。

PKL ファイルを開くプログラム

Windows3 apps
Python (pickle module) オープンソース import pickle; obj = pickle.load(open('file.pkl', 'rb')) - その後、obj を検査します。
Visual Studio Code (with Python extension) 無料 VS Code で Jupyter notebook または Python ターミナルを開き、pickle.load() を使用して内容を検査します。
Spyder IDE オープンソース Spyder の変数エクスプローラーを使用するか、IPython コンソールで pickle.load() を実行します。
macOS1 app
Python (pickle module) オープンソース import pickle; obj = pickle.load(open('file.pkl', 'rb')) - その後、obj を検査します。
Linux1 app
Python (pickle module) オープンソース import pickle; obj = pickle.load(open('file.pkl', 'rb')) - その後、obj を検査します。

技術的詳細

詳細仕様
エンコーディングPickle Virtual Machine (PVM) 用のバイナリ・オペコード・ストリーム
プロトコル 4 マジックバイトオフセット 0 に 80 04 95 (Python 3.4+; Python 3.8-3.11 のデフォルト)
プロトコル 5 マジックバイトオフセット 0 に 80 05 (Python 3.8+, PEP 574, NumPy 用の帯域外バッファサポート)
プロトコル 2 マジックバイトオフセット 0 に 80 02 (Python 2.3+, 新スタイルクラスのサポート, PEP 307)
プロトコル範囲プロトコル 0 (テキスト・オペコード, 1995年) から プロトコル 5 (Python 3.8+, 2019年)
データ構造オペランド・スタックとメモ・テーブルを備えたフラットなオペコード・ストリーム。STOP オペコード (0x2E) がストリームの終端を示す
スキーマ固定スキーマなし。構造はシリアル化される Python オブジェクトによって完全に決定される
MIME タイプapplication/octet-stream (登録された MIME タイプなし)
一般的なファイルサイズ1 KB - 数 GB (小さな辞書から巨大な ML モデルの重みテンソルまで)
セキュリティリスク信頼できないソースからの pickle.load() により、任意の Python コードが実行される可能性がある
言語間の移植性Python 専用。他の言語でこの形式をネイティブに読み書きすることはできない
現代の主な用途scikit-learn モデル、PyTorch の重み (torch.save)、XGBoost モデル、計算結果のキャッシュの保存
互換性のある拡張子.pickle は形式が同一であり、.pkl と完全に互換性がある
関連ライブラリjoblib は、大きな NumPy 配列に適したメモリマッピングの最適化で pickle をラップしている
リリース日1995 (Python 1.2, original pickle module)
最新バージョンProtocol 5 (Python 3.8+, PEP 574, 2019)
仕様書docs.python.org

コミュニティ Q&A

ユーザーからの質問
質問する
PKL ファイルを扱うユーザーからヘルプを得られます。OSやソフトウェアのバージョンなど、具体的に記載してください。
アカウント不要 ・ 通常1日以内に回答されます
A
ArnoSep 2026未回答
Comment créer un fichier pkl ?
回答待ち

よくある質問

.pkl ファイルを開くにはどうすればよいですか?
Python を使用します:import pickle; obj = pickle.load(open('file.pkl', 'rb'))。信頼できる pkl ファイルのみをロードしてください。ロード時にコードが実行される可能性があります。
.pkl ファイルを開いても安全ですか?
ソースを信頼できる場合に限ります。Pickle はロード中に任意の Python コードを実行できます。不明なソースからの .pkl ファイルは決して開かないでください。
どのプログラムが私の .pkl ファイルを作成したのでしょうか?
ほぼ確実に Python です。pickle/joblib を直接使用したか、scikit-learn(model.fit の後に joblib.dump)や PyTorch(torch.save)などのフレームワークを介しています。
Python なしで .pkl ファイルを開くことはできますか?
実質的に不可能です。Pickle は Python 固有の形式です。Python と、理想的にはそのファイルを作成したライブラリ(scikit-learn、PyTorch など)が必要です。
.pkl を JSON や CSV に変換するにはどうすればよいですか?
まず Python の pickle でロードし、次にシリアル化します。JSON 変換可能なデータなら json.dump(obj, open('out.json','w'))、表形式のデータなら pd.DataFrame(obj).to_csv() を使用します。
.pkl と .pickle の違いは何ですか?
同一のものです。どちらも Python の pickle 形式を使用します。拡張子の選択は慣習によるもので、ML の文脈では .pkl がより一般的です。

参考文献

1Python Docs - pickle moduledocs.python.org
2PEP 307 - Protocol 2 (Python 2.3)peps.python.org

さらに探索

データベース全体から

今週のトップ拡張子

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.JPGJPEG Image
4.PARTPartial Download File
5.RPMSGRestricted Permission Message
6.MDMarkdown Document
7.DATProgram Data File (generic)
8.EXEWindows Executable (Portable Executable)
9.BINCD/DVD Disc Image (BIN/CUE)
10.DBSQLite Database File

関連する拡張子

.PKPASSApple Wallet Pass (formerly Passbook)
.DATProgram Data File (generic)
.JSONJavaScript Object Notation file
.RISResearch Information Systems citation file
.OFXOpen Financial Exchange
.CSVComma-Separated Values

無料ファイルツール

ブラウザで動作するファイル識別および画像変換ツール。すべてお使いのデバイス上で実行されます。

ツールボックスを開く

ファイル拡張子を A-Z で閲覧