If I wanted to specify a path to save files to and make directories that don’t exist in that path, is it possible to do this using the pathlib library in one line of code?
4 Answers
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 -pcommand).If parents is false (the default), a missing parent raises
FileNotFoundError.If exist_ok is false (the default),
FileExistsErroris raised if the target directory already exists.If exist_ok is true,
FileExistsErrorexceptions will be ignored (same behavior as the POSIXmkdir -pcommand), but only if the last path component is not an existing non-directory file.
2 Comments
exist_ok set to true, does mkdir just overwrite the dir and make it again? Or does it skip (re)making the dir since it already exists?mypath.mkdir(exist_ok=True) will not raise an error, and will leave the existing directory associated with mypath intact.If your path includes a filename, e.g.
file_path = "/existing_dir/not_existing_dir/another_dir/a_file_name" Then use file_path.parents[0] or file_path.parent:
from pathlib import Path file_path = "/existing_dir/not_existing_dir/another_dir/a_file_name" pathlib.Path(filepath).parent.mkdir(parents=True, exist_ok=True) Otherwise, you might encounter PermissionError: [Errno 13] Permission denied later on.
3 Comments
pathlib.Path(path).parent.mkdir(parents=True, exist_ok=True)