Back to home

PrerequisitesGetting startedCreating the notebookImporting the required librariesGet the relative pathLoad the frontmatter metadataResources and further reading
Frontmatter Parsing With Python main image

Frontmatter Parsing With Python

This post will use the python-frontmatter library to parse an example markdown file with frontmatter to demonstrate how to parse metadata from your markdown files.

This can be a useful tool to colocate important information within your markdown that can be access when programmatically reading files!


  1. Familiarity with Pipenv. See here for my post on Pipenv.
  2. Familiarity with JupyterLab. See here for my post on JupyterLab.
  3. Frontmatter in MDX

Getting started

Let's create the hello-frontmatter directory and install python-frontmatter. We will also need to add an example markdown file.

1 2 3 4 5 6 7 8 9 10 # Make the `hello-frontmatter` directory $ mkdir hello-frontmatter $ cd hello-frontmatter # Create an example MDX file $ touch frontmatter-example.mdx # Init the virtual environment $ pipenv --three $ pipenv install python-frontmatter $ pipenv install --dev jupyterlab

Inside of frontmatter-example.mdx add the following:

1 2 3 4 5 6 --- title: Henlo, FrontMatter date: "2016-12-16" --- Henlo world, this is me.

At this stage, we are ready to parse the file and get the metadata.

Start up the notebook server:

1 2 3 # Startup the notebook server $ pipenv run jupyter-lab # ... Server is now running on http://localhost:8888/lab

The server will now be up and running.

Creating the notebook

Once on http://localhost:8888/lab, select to create a new Python 3 notebook from the launcher.

Ensure that this notebook is saved in hello-frontmatter/docs/<your-file-name>.

We will create three cells to handle each part of this project:

  1. Import the python-frontmatter library and related modules for the os.path library to help determine the relative path.
  2. Use the os.path imports to get the relative path to the file.
  3. Load the frontmatter metadata from the file and print them to the console.

Importing the required libraries

1 2 import frontmatter from os.path import join, dirname, abspath

Get the relative path

1 2 3 mdx_filepath = join(dirname(abspath("__file__")), '../frontmatter-example.mdx') print(mdx_filepath) # ... prints out path to the markdown file

Load the frontmatter metadata

Finally, we can use the frontmatter.load method to parse the frontmatter metadata from the file.

1 2 3 4 post = frontmatter.load(mdx_filepath) print(post.keys()) print(post['title']) # prints "Henlo, FrontMatter" print(post['date']) # prints "2016-12-16"

Resources and further reading

Dennis O'Keeffe

  • Melbourne, Australia

Hi, I am a professional Software Engineer. Formerly of Culture Amp, UsabilityHub, Present Company and NightGuru.
I am currently working on, Den Dribbles and LandPad .

Related articles


Get fresh posts + news direct to your inbox.

No spam. We only send you relevant content.