Group files together in a breeze with glob-like patterns
Project description
grob
Group files together in a flexible way using glob-like patterns.
pip install grob
In its simplest form, grob
simply lists all files in a directory:
~ grob "*" .
[
"examples/one_tag_same_dir/root/image_001.png",
"examples/one_tag_same_dir/root/image_002.jpg",
"examples/one_tag_same_dir/root/image_003.gif"
]
given the following directory content:
root
├── image_001.png
├── image_002.jpg
└── image_003.gif
However, grob
is mainly useful to group different files together. Let's say you have images and corresponding JSON description for each image:
root
├── image_1.png
├── image_2.png
├── image_3.png
├── labels_1.json
├── labels_2.json
└── labels_3.json
~ grob "image=image_{id}.png,labels=labels_{id}.json" .
{
"1": {"image": "image_1.png", "labels": "labels_1.json"},
"2": {"image": "image_2.png", "labels": "labels_2.json"},
"3": {"image": "image_3.png", "labels": "labels_3.json"}
}
Now imagine each group of inputs is stored in the same subdirectory:
root
├── group_a
│ ├── image.png
│ └── labels.json
├── group_b
│ ├── image.png
│ └── labels.json
├── group_c
│ ├── image.png
│ └── labels.json
└── group_d
├── image.png
└── labels.json
We just need to update our pattern:
~ grob "image=group_{name}/*.png,labels=group_{name}/*.json" .
{
"a": {"image": "group_a/image.png", "labels": "group_a/labels.json"},
"b": {"image": "group_b/image.png", "labels": "group_b/labels.json"},
"c": {"image": "group_c/image.png", "labels": "group_c/labels.json"},
"d": {"image": "group_d/image.png", "labels": "group_d/labels.json"}
}
What if each type of file lives in its own directory?
root
├── images
│ ├── fifi.gif
│ ├── loulou.png
│ └── riri.jpg
└── labels
├── fifi.json
├── loulou.json
└── riri.json
~ grob "image=images/{name}.*,labels={name}.json" .
{
"riri": {"image": "images/riri.jpg", "labels": "labels/riri.json"},
"fifi": {"image": "images/fifi.gif", "labels": "labels/fifi.json"},
"loulou": {"image": "images/loulou.png", "labels": "labels/loulou.json"}
}
See more in the Examples section, or check tests/examples/
.
Contribute
Install the environment and the pre-commit hooks with
make install
Run tests:
make tests
# Alternatively, you can directly run `pytest`
Run code quality tools:
make check
Repository initiated with fpgmaas/cookiecutter-poetry.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file grob-0.2.1.tar.gz
.
File metadata
- Download URL: grob-0.2.1.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ca2dc3b9901f2a1595b780532645f0789c64d7680e5a29f59b2622c6dbd5d32 |
|
MD5 | c1db7be226175aaf427de1012b957f33 |
|
BLAKE2b-256 | b120df3769dae0dc354660416f47320d3b4dce231b06a9d2a90bbe38e9f5e8c5 |
File details
Details for the file grob-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: grob-0.2.1-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aacea041158cd46795632913f886d37d7121d976c9db0934c488f8d3cd8d4697 |
|
MD5 | fb099cb3d72f52ea3007a886ff2623c1 |
|
BLAKE2b-256 | e67c5fd68e1767fa3ff88892ddcde3dce9bca2526c5c17a56693d3b00a3736c4 |