quilt data 编辑数据包

编辑一个数据包

在 Quilt 中,数据以数据包data packages.的形式组织。数据包是一组文件、目录和元数据的逻辑集合。
A data package is a logical group of files, directories, and metadata.

初始化一个包

要编辑一个新的空包,使用包的构造函数:

import quilt3
p = quilt3.Package()

要编辑一个预先存在的包,首先确保安装了该包:

import quilt3
quilt3.Package.install(
    "examples/hurdat",
    "s3://quilt-example",
)

使用 browse 命令来浏览并编辑包:

p = quilt3.Package.browse('examples/hurdat')

向包中添加数据

使用 set 和 set_dir 命令分别将单个文件和整个目录添加到包中:

import quilt3
from pathlib import Path
from os import chdir

TEST_DIR = "test_workflow"
SUB_DIR = "subdir"

# 创建测试目录
Path(TEST_DIR).mkdir(exist_ok=True)
Path(TEST_DIR, SUB_DIR).mkdir(exist_ok=True)
chdir(TEST_DIR) # 如果在 Jupyter 中,可以使用 %cd TEST_DIR/

# 使用 `set` 命令逐个添加条目
# 例如:p.set("foo.csv", "/local/path/foo.csv") 或 p.set("bar.csv", "s3://bucket/path/bar.csv")

# 创建测试数据
with open("data.csv", "w") as f:
    f.write("id, value\na, 42")

p = quilt3.Package()
p.set("data.csv", "data.csv")
p.set("banner.png", "s3://quilt-example/imgs/banner.png")

# 或者一次性添加一个目录中的所有内容,使用 `set_dir` 命令
# 例如:p.set_dir("stuff/", "/path/to/stuff/") 或 p.set_dir("things/", "s3://path/to/things/")

# 在包中创建逻辑目录
p.set_dir("stuff/", SUB_DIR)
p.set_dir("imgs/", "s3://quilt-example/imgs/")

以上命令中的第一个参数是逻辑键,它确定文件在包中的位置。因此,运行上述命令后,我们的包将如下所示:

p
(remote Package)
 └─banner.png
 └─data.csv
 └─imgs/
   └─banner.png
 └─stuff/

第二个参数是物理键,指定文件的实际位置。物理键可以指向本地文件或远程对象(使用 s3:// 路径)。
如果物理键和逻辑键相同,可以省略第二个参数:

import quilt3
p = quilt3.Package()
p.set("data.csv")
(local Package)
 └─data.csv

另一个有用的技巧是使用 “.” 将包的内容设置为当前目录的内容:

# 在测试目录中创建一个测试文件
with open("new_data.csv", "w") as f:
    f.write("id, value\na, 42")

# 将包的内容设置为当前目录的内容
p.set_dir(".", ".")
(local Package)
 └─data.csv
 └─new_data.csv

从包中删除数据

使用 delete 命令从包中删除条目:

p.delete("data.csv")
(local Package)
 └─new_data.csv

请注意,这只会从包中删除数据条目,而不会删除实际的数据本身。

向包添加元数据

包支持在包的任何位置设置元数据。要在包的条目或目录上设置元数据,请使用 meta 参数:

import quilt3
p = quilt3.Package()
p.set("data.csv", "new_data.csv", meta={"type": "csv"})
p.set_dir("subdir/", "subdir/", meta={"origin": "unknown"})
(local Package)
 └─data.csv
 └─subdir/

您还可以使用 set_meta 在整个包上设置元数据:

# 在包上设置元数据
p.set_meta({"package-type": "demo"})
(local Package)
 └─data.csv
 └─subdir/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值