# Glom | Restructuring data, the Python way

**URL:** <https://onehack.st/t/glom-restructuring-data-the-python-way/288018>\
**Category:** Tools & Scripts\
**Tags:** tools, freebies, data-recovery\
**Created:** [July 31, 2024, 9:19pm UTC](https://onehack.st/t/glom-restructuring-data-the-python-way/288018 "2024-07-31T21:19:45Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Prometheus](https://onehack.st/user_avatar/onehack.st/prometheus/32/34950_2.png) [@Prometheus](https://onehack.st/u/Prometheus)\
**Post date:** [July 31, 2024, 9:19pm UTC](https://onehack.st/t/glom-restructuring-data-the-python-way/288018/1 "2024-07-31T21:19:45Z")

</div>

[![](https://raw.githubusercontent.com/mahmoud/glom/master/docs/_static/comet.png)](https://raw.githubusercontent.com/mahmoud/glom/master/docs/_static/comet.png)

# Glom

_Restructuring data, the Python way_

[![](https://camo.githubusercontent.com/eebb317da7541601b824ee28c72e75dffe6105cf37a4e4c5fc3a1d3369c287bc/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f676c6f6d2e737667)](https://pypi.org/project/glom/) [![](https://camo.githubusercontent.com/72df00f12975ad141366b4da71b219e77cb1eb7ffbe3a4256b278dac86674edf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f63616c7665722d59592e4d4d2e4d4943524f2d3232626664612e737667)](https://calver.org/)

Real applications have real data, and real data nests. Objects inside of objects inside of lists of objects.

glom is a new and powerful way to handle real-world data, featuring:

- Path-based access for nested data structures
- Readable, meaningful error messages
- Declarative data transformation, using lightweight, Pythonic specifications
- Built-in data exploration and debugging features

All of that and more, available as a [fully-documented](https://glom.readthedocs.io/), pure-Python package, tested on Python 3.7+, as well as PyPy3. Installation is as easy as:

```auto
  pip install glom

```

And when you install glom, you also get [the `glom` command-line interface](http://glom.readthedocs.io/en/latest/cli.html), letting you experiment at the console, but never limiting you to shell scripts:

```auto
Usage: glom [FLAGS] [spec [target]]

Command-line interface to the glom library, providing nested data access and data
restructuring with the power of Python.

Flags:

  --help / -h show this help message and exit
  --target-file TARGET_FILE path to target data source (optional)
  --target-format TARGET_FORMAT
                                  format of the source data (json, python, toml,
                                  or yaml) (defaults to 'json')
  --spec-file SPEC_FILE path to glom spec definition (optional)
  --spec-format SPEC_FORMAT format of the glom spec definition (json, python,
                                    python-full) (defaults to 'python')
  --indent INDENT number of spaces to indent the result, 0 to disable
                                    pretty-printing (defaults to 2)
  --debug interactively debug any errors that come up
  --inspect interactively explore the data

```

Anything you can do at the command line readily translates to Python code, so you’ve always got a path forward when complexity starts to ramp up.

## Examples

#### Without glom

> > > data = {‘a’: {‘b’: {‘c’: ‘d’}}} \>\>\> data[‘a’][‘b’][‘c’] ‘d’ \>\>\> data2 = {‘a’: {‘b’: None}} \>\>\> data2[‘a’][‘b’][‘c’] Traceback (most recent call last): … TypeError: ‘NoneType’ object is not subscriptable

#### With glom

> > > glom(data, ‘a.b.c’) ‘d’ \>\>\> glom(data2, ‘a.b.c’) Traceback (most recent call last): … PathAccessError: could not access ‘c’, index 2 in path Path(‘a’, ‘b’, ‘c’), got error: …

## Learn more

[![](https://raw.githubusercontent.com/mahmoud/glom/master/docs/_static/comet_multi.png)](https://raw.githubusercontent.com/mahmoud/glom/master/docs/_static/comet_multi.png)

If all this seems interesting, continue exploring glom below:

- [glom Tutorial](https://glom.readthedocs.io/en/latest/tutorial.html)
- [Full API documentation at Read the Docs](https://glom.readthedocs.io/)
- [Original announcement blog post (2018-05-09)](https://sedimental.org/glom_restructured_data.html)
- [Frequently Asked Questions](https://glom.readthedocs.io/en/latest/faq.html)
- [PyCon 2018 Lightning Talk (2018-05-11)](https://www.youtube.com/watch?v=bTAFl8P2DkE&t=18m07s)

All of the links above are overflowing with examples, but should you find anything about the docs, or glom itself, lacking, [please submit an issue](https://github.com/mahmoud/glom/issues/)!

In the meantime, just remember: When you’ve got nested data, glom it! ☄

## GitHub:

[https://github.com/mahmoud/glom](https://github.com/mahmoud/glom)
