Python SDK
在一些权限受限的环境中(如非特权容器和大部分 Serverless 环境),由于无法使用 FUSE 模块,挂载文件系统会受到 限制。为了解决这些限制并更好地支持 AI 场景,JuiceFS 企业版在 5.1 版本中推出了 Python SDK,允许应用程序在进程内直接访问 JuiceFS。
JuiceFS Python SDK 尚处于 Beta 公测阶段,必须谨慎使用,并且在投入生产环境使用前进行充分测试。使用过程中如果遇到问题,请及时联系 Juicedata 工程师协助解决。
安装
确保安装了 Python 3.8 及以上版本,然后通过 pip
安装 JuiceFS Python SDK:
pip install https://static.juicefs.com/misc/juicefs-5.2.9.202508121612-py3-none-any.whl
初始化 JuiceFS 客户端
在 Python SDK 中,需要初始化一个 juicefs.Client
对象,并通过他来访问 JuiceFS 文件系统。如果此前使用云服务客户端挂载过文件系统,也就是说在当前用户的 ~/.juicefs
目录下已经存在文件系统的 *.conf
配置文件,那么在初始化 Client
对象时只需指定文件系统名称:
import juicefs
# 使用名为 myjfs 的文件系统初始化客户端对象
jfs = juicefs.Client("myjfs")
如果没有,则需要提供 JuiceFS 的认证信息,包括文件系统名称、token、对象存储的访问密钥等:
- 云服务
- 企业版(私有部署)
import os
import juicefs
# 从环境变量中获取配置信息,也可以直接填写。
volume = os.getenv("VOLUME_NAME")
jfs_token = os.getenv("TOKEN")
ak = os.getenv("ACCESS_KEY")
sk = os.getenv("SECRET_KEY")
# 初始化 JuiceFS 客户端
jfs = juicefs.Client(volume, # 文件系统名称
token=jfs_token, # JuiceFS 控制台获取的文件系统 token
access_key=ak, # 对象存储的 Access Key
secret_key=sk) # 对象存储的 Secret Key
import os
import juicefs
# 从环境变量中获取配置信息,也可以直接填写。
volume = os.getenv("VOLUME_NAME")
jfs_token = os.getenv("TOKEN")
ak = os.getenv("ACCESS_KEY")
sk = os.getenv("SECRET_KEY")
console_url = os.getenv("CONSOLE_URL") # 私有部署控制台地址,例如 http://<console-IP>:8080
# 初始化 JuiceFS 客户端
jfs = juicefs.Client(volume, # 文件系统名称
token=jfs_token, # JuiceFS 控制台获取的文件系统 token
access_key=ak, # 对象存储的 Access Key
secret_key=sk, # 对象存储的 Secret Key
console_url=console_url)
基本文件操作
为了便于用户快速上手使用,JuiceFS Python SDK 在设计上参考了 Python 的内置函数和 os
包中的部分函数。以下是一些基本的文件操作示例。
列出目录中的文件
使用 listdir()
方法列出指定目录中的文件:
jfs.listdir('/')
创建目录
你可以使用 makedirs()
方法创建目录:
jfs.makedirs("/files")
检查文件或目录是否存在
使用 exists()
方法检查文件或目录是否存在:
if jfs.exists("/files/hello.txt"):
print("File exists")
else:
print("File does not exist")
写入文件
使用 open()
方法打开文件并使用 write()
方法写入内容:
with jfs.open("/files/hello.txt", "w") as f:
f.write("hello")
追加内容
使用 open()
方法以追加模式打开文件并写入内容:
with jfs.open("/files/hello.txt", "a+") as f:
f.write(" world")
读取文件
使用 open
方法打开文件并使用 read()
方法读取内容:
with jfs.open("/files/hello.txt") as f:
data = f.read()
print(data)
删除文件
使用 remove()
方法删除文件:
jfs.remove("/files/hello.txt")
高级操作
修改文件权限
使用 chmod()
方法修改文件权限,权限参数为八进制数:
jfs.chmod("/files/hello.txt", 0o777)
创建符号链接
使用 symlink()
方法创建符号链接:
jfs.symlink("/files/hello.txt", "/files/link")