Skip to content

os-symlink (PTH211)

Derived from the flake8-use-pathlib linter.

This rule is unstable and in preview. The --preview flag is required for use.

What it does

Checks for uses of os.symlink.

Why is this bad?

pathlib offers a high-level API for path manipulation, as compared to the lower-level API offered by os.symlink.

Example

import os

os.symlink("usr/bin/python", "tmp/python", target_is_directory=False)

Use instead:

from pathlib import Path

Path("tmp/python").symlink_to("usr/bin/python")

Known issues

While using pathlib can improve the readability and type safety of your code, it can be less performant than the lower-level alternatives that work directly with strings, especially on older versions of Python.

References