使用文件系统¶
工作区文件系统¶
工作区环境左侧窗格中显示的文件代表工作区目录的内容,该目录是笔记本的工作目录。
要查看完整路径,请运行 pwd 或以下命令:
import os
print(os.getcwd())
这会按以下格式打印路径:
/workspace/<workspace_hash representing your workspace>
Using ls to list files displays notebook files and any folders or project assets stored in the Workspace directory.
Referencing files¶
您可以通过完整路径和相对路径引用当前工作区目录中的文件。例如,您想读取工作区中的笔记本和示例数据集(CSV 格式):
ml-intent-prediction/
├── data/
│ └── sample_data.csv
├── notebooks/
│ └── analysis.ipynb
└── utilities.py
使用相对路径读取数据:
import pandas as pd
df = pd.read_csv("../data/sample_data.csv")
df.head()
使用完整路径读取数据:
import pandas as pd
df = pd.read_csv("/workspace/<workspace_hash>/ml-intent-prediction/data/sample_data.csv")
df.head()
限制¶
不支持通过代码或终端向工作区目录写入文件。虽然文件写入在会话期间可能会起作用,但不能保证它们会成功,并且在未来的版本中可能会失败。
工作区目录中的文件持久性具有以下限制:
文件是只读的:
/workspace/<workspace_hash>下的文件是只读的,在执行笔记本时无法在代码中更新。不支持从代码或终端写入文件: 不要以编程方式将文件写入工作区目录。使用 Snowflake 暂存区来保存文件(请参阅 持久化文件)。
Only files uploaded or created in Snowsight persist: Only files that are uploaded or created through Snowsight persist across sessions.
仅会话可见性: 当笔记本服务暂停时,会话期间通过代码或终端创建的任何文件都将被移除。这些文件不会出现在左侧窗格中。
容器的 /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。