Python pathlib make directories if they don’t exist

Python pathlib make directories if they don’t exist

Yes, that is Path.mkdir:

pathlib.Path(/tmp/sub1/sub2).mkdir(parents=True, exist_ok=True)

From the docs:

If parents is true, any missing parents of this path are created as
needed; they are created with the default permissions without taking
mode into account (mimicking the POSIX mkdir -p command).

If parents is false (the default), a missing parent raises
FileNotFoundError.

If exist_ok is false (the default), FileExistsError is raised if the
target directory already exists.

If exist_ok is true, FileExistsError exceptions will be ignored (same
behavior as the POSIX mkdir -p command), but only if the last path
component is not an existing non-directory file.

This gives additional control for the case that the path is already there:

path = Path.cwd() / new / hi / there
try:
    path.mkdir(parents=True, exist_ok=False)
except FileExistsError:
    print(Folder is already there)
else:
    print(Folder was created)

Python pathlib make directories if they don’t exist

Adding to Wims answer. If your path has a file on the end that you do not want made as a directory.

ie.
/existing_dir/not_existing_dir/another_dir/a_file

Then you use PurePath.parents. But the nice thing is that because Paths inherit the attributes of Pure Paths, then you can simply do

filepath = /existing_dir/not_existing_dir/another_dir/a_file
pathlib.Path(filepath).parents[0].mkdir(parents=True, exist_ok=True)

Leave a Reply

Your email address will not be published. Required fields are marked *