Creating a Subdirectory
00:00 So you’ve created a new notes directory, but in here you want to keep track of plans on a different schedule. Let’s say you have monthly plans and weekly plans.
00:10 So you want to create a subdirectory to this notes directory that is inside of yet another subdirectory called plans. Let me type this out. It will be a little easier to understand.
00:21
So, say you want a monthly_dir
and it should be inside of your notes_dir
and then inside of a "plans"
directory, and then it should be called "monthly"
.
00:36 This is where you’re going to store your monthly plans, let’s say. Now you can create this path just like this.
00:44
No complaints. The path shows up beautifully. But now if you want to create this directory, you’ll run into an error. monthly_dir.mkdir()
gives you a FileNotFoundError
because, while the notes directory exists, you did not yet create the plans directory. In general, to be able to create a directory, all the parent directories need to already exist. However, there’s a different way of doing it by setting another parameter to True
.
01:16
It goes like this. If you say monthly_dir.mkdir()
and then pass parents
the value True
,
01:28
then you see that Python doesn’t complain, and monthly_dir
does now exist. So all the intermediate subfolders—in this case, it’s only one, called "plans"
—get created if you pass parents=True
to .mkdir()
. So putting these two things together, the one you saw before about exist_ok
, and parents
gives you a common pattern when creating directories using Python’s pathlib
module. Let’s make a new directory.
02:00
So aside from your monthly plans, you also want to have weekly plans. So weekly_dir
…
02:14
"plans"
and then "weekly"
.
02:17
And even if the subfolder "plans"
wouldn’t exist, now you could create everything you need like this: saying weekly_dir.mkdir()
and give it parents=True
and exist_ok
also True
.
02:37
This is a common pattern, where you set both the .parents
attribute as well as the .exist_ok
attribute to True
, but it might not make sense in all situations.
02:46
For example, if you want a user to pass a certain path, you might want to double check that the path already exists and that they’re not accidentally mistyping the path that they wanna save a file to, for example, just by adding an accidental typo. But you’ll commonly see, and probably also commonly use, this pattern of using parents=True
and exist_ok
also True
. All right, enough with folders. In the next lesson, you’ll learn how to create files using pathlib
.
Bartosz Zaczyński RP Team on July 4, 2023
@James Tuttle Those should work out of the box, for example, when you open a parenthesis and give IDLE a second before it shows the popup.
Become a Member to join the conversation.
James Tuttle on July 3, 2023
On your IDLE, how are you getting the intellsense popup?