使用文件系统

工作区文件系统

工作区环境左侧窗格中显示的文件代表工作区目录的内容,该目录是笔记本的工作目录。

工作区文件系统

在工作区目录中运行 ls 会列出目录中所有文件和文件夹,包括笔记本和任何其他项目资产。

引用文件

您可以通过相对路径引用当前工作区目录中的文件。例如,您想读取工作区中的笔记本和示例数据集(CSV 格式):

ml-intent-prediction/
├── data/
│   └── sample_data.csv
├── notebooks/
│   └── analysis.ipynb
└── utilities.py

在 Python 单元格中,运行以下代码:

import pandas as pd

df = pd.read_csv("../data/sample_data.csv")
df.head()

限制

不支持通过代码或终端向工作区目录写入文件。虽然文件写入在会话期间可能会起作用,但不能保证它们会成功,并且在未来的版本中可能会失败。

工作区目录中的文件持久性具有以下限制:

  • 文件是只读的: /workspace/<workspace_hash> 下的文件是只读的,在执行笔记本时无法在代码中更新。

  • 不支持从代码或终端写入文件: 不要以编程方式将文件写入工作区目录。使用 Snowflake 暂存区来保存文件(请参阅 持久化文件)。

  • 仅在 Snowsight 中上传或创建的文件会持续存在: 只有通过 Snowsight 上传或创建的文件才会跨会话持久保存。

  • 仅会话可见性: 当笔记本服务暂停时,会话期间通过代码或终端创建的任何文件都将被移除。这些文件不会出现在左侧窗格中。

容器的 /tmp 目录

/tmp 目录也是可读取/写入的,适用于草稿工作或不需要持久化的临时数据。

将文件写入 /tmp 的示例:

file_path = "/tmp/sample.txt"

with open(file_path, "w") as f:
    f.write("Hello from Python!\\nThis is a sample file saved in /tmp.")

print(f"File written to {file_path}")

要列出 /tmp 目录中的文件,请运行以下命令:

%%bash
cd /tmp
ls

持久化文件

要存储文件以备后用,请使用 Snowpark 文件操作 APIs 将其写入具有写访问权限的 Snowflake 暂存区。

要了解有关所需暂存区权限的更多信息,请参阅 写访问权限。有关 Snowpark 文件操作,请参阅 Snowpark 文件操作 APIs