Creating a File
00:00
Let’s create a file inside of that monthly directory. I want to make some resolutions for coming January. So let’s say I will create a january_path
file inside of the monthly_dir
, and I’ll call it "january.txt"
.
00:21
That’ll contain some aims for the coming year, let’s say. So I’ve created the path. The path is here, but the file doesn’t exist yet. Now, if I want to create the file, I can say january_path.touch()
… and this .exists()
….
00:47
actually created a .txt
file. Let’s double-check that this is actually a file,
00:55
and there it is. If I use .is_file()
on the Path
object, then I get a True
. So I just created file called january.txt
.
01:06
If you call .touch()
again on an existing file, then it doesn’t raise an error like it does with directories that already exist. So I can do this, and there’s no penalty for me.
01:18
Nothing happens really, except that the timestamp gets updated. Now, you can’t create a file inside of a path structure that doesn’t entirely exist. There’s no equivalent to the parents=True
attribute that you can use for directories.
01:34
If I tried to create too_much_future_path
inside of a directory that doesn’t exist, let’s say inside of Path.home() /
01:51
"notes" /
and then I will create a path that doesn’t exist. I’ll say there’s a "yearly"
folder, but I’ve never created this one.
01:59
And then inside of too_much_future_path
—oh, I forgot to put a file on there, so let me add that.
02:10
I’m just going to overwrite the variable here to also add a filename, "3033.txt"
.
02:19
So now the too_much_future_path
is here, and the path points to a file called 3033.txt
inside of a folder called yearly
. However, that yearly
folder doesn’t exist.
02:31
So if now I tried to create this file by saying .touch()
, Python will give me a FileNotFoundError
. The reason for this is that yearly
, this folder, just doesn’t exist.
02:45
You need to have all the containing parents folders created before creating a file. There is no parents=True
parameter that you can pass to the .touch()
method, but what you can do is you can use the .parent
attribute on the path to return a Path
object and then create that folder.
03:04
So since there’s only one directory missing, this one, you can say too_much_future_path.parent
. This will point to the Path
object that goes to the subfolder yearly
, and I can say .mkdir()
.
03:24
Optionally, if there were multiple directories that didn’t exist in between here, you could pass parents=True
, and then after calling this function, you can say too_much_future_path.touch()
.
03:40 And now it went through. This file was created as well.
03:47
So by combining the attributes and methods that you have available on Path
objects, you can perform a lot of common files operations such as creating directories and creating files. In the next lesson, let’s do a quick recap of the different methods that you saw.
Become a Member to join the conversation.