注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
添付ファイルはオブジェクトのプロパティのように機能するファイルです。 添付ファイルは一時ファイルとしてアップロードされ、Actions を介してオブジェクトに添付されます。 一度オブジェクトに添付されると、添付ファイルは永続化され、他のプロパティと同様にアクセスできます。
添付ファイルは、Actions からの入力として直接 Functions に渡すか、オブジェクトのプロパティとしてアクセスできます。 Functions 内で添付ファイルを作成することもできます。 添付ファイルは API Gateway を介して管理され、添付ファイルのタイプは Python OSDK で提供されます。
便利なように、OSDK の Attachment タイプは Python Functions API パッケージから再エクスポートされ、以下のようにインポートできます:
Copied!1
from functions.api import Attachment # functions.apiモジュールからAttachmentをインポート
添付ファイルから生データを読み取るには、添付ファイルの read
メソッドを使用します。
read
メソッドのシグネチャは次のとおりです:
Copied!1
def read(self) -> BytesIO: ... # BytesIOオブジェクトを返すメソッド
BytesIO
は標準のPython 型 ↗で、バイナリストリームを表します。
Python 関数内では、ファイルを処理するための一時ディスクにアクセスできます。 これにより、TypeScript Functionsで添付ファイルを処理する場合とは異なり、ディスクアクセスやバイナリ依存関係を必要とする Python ファイル処理ライブラリのほとんどを使用することができます。
関数を使用して添付ファイルを作成し、オブジェクトに添付することもできます。Functionsで作成された添付ファイルを永続化するには、その添付ファイルをオブジェクトにリンクするオントロジー編集を行う必要があります。
オブジェクトに添付されていない添付ファイルはアップローダーのみが表示でき、一定期間後に自動的に削除されます。
添付ファイルを作成するには、インスタンス化された FoundryClient
の client.ontology.attachments
の upload
を使用します。
upload
メソッドのシグネチャは次のとおりです。
Copied!1 2 3 4 5 6 7 8
def upload(file_path: str, attachment_name: str) -> None: """ 指定されたファイルパスからファイルをアップロードする関数 :param file_path: アップロードするファイルのパス :param attachment_name: アップロード時の添付ファイル名 :return: なし """ ...
file_path
はアップロードするローカルファイルです。
次の例は、添付ファイルからデータを読み取り、ファイルをアップロードし、生成された添付ファイルをオブジェクトに割り当てる方法を示しています。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
from io import BytesIO from functions.api import function, Attachment, OntologyEdit from ontology_sdk import FoundryClient from ontology_sdk.ontology.objects import Aircraft @functions(edits=[Aircraft]) def update_maintenance_log( aircraft: Aircraft, completed_maintenance_log: Attachment ) -> list[OntologyEdit]: ontology_edits = FoundryClient().ontology.edits() # 現在の航空機のメンテナンスログを読み込み maintenance_log_data: BytesIO = aircraft.maintenance_log.read() # 完了したメンテナンスログを読み込み completed_maintenance_log_data: BytesIO = completed_maintenance_log.read() # 現在の航空機のログと完了したログを比較して、新しいメンテナンスログを作成 updated_maintenance_log_data: BytesIO = get_updated_maintenance_log( maintenance_log_data, completed_maintenance_log_data ) # 航空機オブジェクトを編集可能状態にする editable_aircraft = ontology_edits.objects.Aircraft.edit(aircraft) # 新しいメンテナンスログをテキストファイルに書き込む with open("updated-maintenance-log.txt", "wb") as f: f.write(updated_maintenance_log_data.getbuffer()) # 新しいメンテナンスログをアップロードし、航空機オブジェクトに設定 editable_aircraft.maintenance_log = client.ontology.attachments.upload( "updated-maintenance-log.txt", "my_attachment" ) # 編集内容を返す return ontology_edits.get_edits()