1. はじめに
Notebook で Data Asset (資産) をアップロードしたものの、
import os
print(os.getcwd())
print(os.listdir("."))
を実行してもファイルが見つからず、ファイルの配置場所がわかりませんでした。
そこで Data Asset がどこに配置されるのかを調査しました。
2. Notebook の作業ディレクトリを確認する
import os
print(os.getcwd())
/home/wsuser/work
Notebook の作業ディレクトリは
/home/wsuser/work
でした。
3. Data Asset は自動では作業ディレクトリに配置されない
以下を実行したところ、
os.listdir(".")
[]
となりました。
Data Asset にアップロードしたファイルはNotebookの作業ディレクトリ
/home/wsuser/work
には自動配置されないようです。
4. Data Asset の保存場所
Assets にアップロードした PDF ファイル (例: sample.pdf) の保存場所を調査するため、以下のコマンドを実行しました。
!find / -name "*.pdf" 2>/dev/null
:
/project_data/data_asset/sample.pdf
が見つかり、
/project_data/data_asset/
配下に配置されていることがわかりました。
例えば、sample.pdfの場合、
/project_data/data_asset/sample.pdf
としてアクセスできます。
5. Notebookからの利用方法
方法1: Data Asset を直接利用する
source_filename = "/project_data/data_asset/sample.pdf"
として利用できます。
方法2: Data Asset を Notebook にダウンロードする
もう一つの方法として、
client.data_assets.download(
asset_id="...",
filename="sample.pdf"
)
を利用できます。
Successfully saved data asset content to file: 'sample.pdf'
'/home/wsuser/work/sample.pdf'
実行後、Notebook の作業ディレクトリを確認すると、
import os
print(os.getcwd())
print(os.listdir("."))
/home/wsuser/work
['sample.pdf']
となっており、ファイルは
/home/wsuser/work/sample.pdf
に保存されています。
6. それぞれの方法のメリット・デメリット
方法1: /project_data/data_asset/ を直接参照する方法
Data Asset をそのまま利用する方法です。
source_filename = "/project_data/data_asset/sample.pdf"
メリット
- ダウンロード不要
- Data Asset を直接参照できる
- 余分なコピーが発生しない
- Notebook 上で手軽に利用できる
デメリット
- /project_data/data_asset/ という配置場所を知っている必要がある
- Notebook 環境に依存する
- 後続処理でファイル名にパスが含まれる場合がある
方法2: client.data_assets.download() を利用する方法
Data Asset を Notebook の作業ディレクトリにダウンロードして利用する方法です。
client.data_assets.download(
asset_id="...",
filename="sample.pdf"
)
メリット
- Asset ID がわかっていれば取得できる
- Data Asset がどこに配置されているかを意識する必要がない
- Notebook の作業ディレクトリ (/home/wsuser/work) に取得できる
- 後続処理でファイル名をシンプルに扱える
デメリット
- ダウンロード処理が必要
- ファイルのコピーが発生する
- 保存先の管理が必要
7. まとめ
今回の調査で次のことがわかりました。
| 項目 | 場所 |
|---|---|
| Notebook 作業ディレクトリ | /home/wsuser/work |
| Asset にアップロードしたファイルの参照先 | /project_data/data_asset |
| client.data_assets.download() の保存先 | /home/wsuser/work |
Data Asset は自動的に Notebook の作業ディレクトリには配置されませんが、/project_data/data_asset/ 配下から直接参照できます。また、client.data_assets.download() を利用して Notebook の作業ディレクトリへダウンロードして利用することもできます。
用途に応じて、コピー不要な直接参照方式と、扱いやすいファイル名で利用できるダウンロード方式を使い分けることができます。
今回の検証では、Text Extraction の入力ファイルとして利用する場合、方法1・方法2のどちらでも問題なく利用できました。ただし、後続処理でファイル名をシンプルに扱いたい場合は、方法2を選択した方が扱いやすいと感じました。
補足: document_reference.write() で利用する場合
それぞれの方法で sample.pdf ファイルを document_reference.write() を使ってICOSにアップロードできることを確認しました。document_reference.write() に渡す source_filename が異なります。
方法1
from ibm_watsonx_ai.helpers import DataConnection, S3Location
source_filename = "/project_data/data_asset/sample.pdf"
document_reference = DataConnection(
connection_asset_id=connection_asset_id,
location=S3Location(bucket=bucket_name, path=source_filename)
)
document_reference.set_client(client)
document_reference.write(source_filename)
方法2
from ibm_watsonx_ai.helpers import DataConnection, S3Location
source_filename = "sample.pdf"
document_reference = DataConnection(
connection_asset_id=connection_asset_id,
location=S3Location(bucket=bucket_name, path=source_filename)
)
document_reference.set_client(client)
document_reference.write(source_filename)
今回の環境では、document_reference.write() に渡した source_filename の値が、ICOS 上のオブジェクト名に反映されることを確認しました。
そのため、
-
/project_data/data_asset/sample.pdfを指定した場合は、project_data/data_asset/sample.pdf -
sample.pdfを指定した場合は、sample.pdf
として保存されました。
検証環境
- IBM Software Hub 5.3.1 と 5.4.0 で確認
- Runtime 25.1 on Python 3.12

