What’s New ?

The Top 10 favtutor Features You Might Have Overlooked

Read More

03 Methods to Get Filename from Path in Python (with code)

  • Dec 16, 2022
  • 6 Minute Read
  • Why Trust Us
    We uphold a strict editorial policy that emphasizes factual accuracy, relevance, and impartiality. Our content is crafted by top technical writers with deep knowledge in the fields of computer science and data science, ensuring each piece is meticulously reviewed by a team of seasoned editors to guarantee compliance with the highest standards in educational content creation and publishing.
  • By Abrar Ahmed
03 Methods to Get Filename from Path in Python (with code)

There are many occasions where during coding you will have to deal with files. In many competitive coding scenarios too, you will come across input files that will be provided to you for testing. Handling files in any programming language is an essential skill that must be learned by every coder.

The first step in file handling is being able to parse the filename from the user. When a file is supposed to be read in a program, how do we access it? So, we will find out here How do I get the filename from the path in Python? We listed both ways for with and without extension.

What are Filename and Path?

Filename and path are two terminologies that are associated with file handling. As the name suggests, the filename refers to the name of the actual file whereas the path refers to the exact location of a file.

The contents of a file can only be accessed by its name. But the OS or the operating software we use does not store the file name as a single entity. 

For example, if we want to go to our university, then our university is the filename, and the set of directions required to reach it is the path. Let us take the same example we took above to understand this concept:

C:\Users\User1\Documents\file1.txt

Here what do you think is the filename? The file name in this example is file1.txt. An easy way to find out the file name is to look for the part that has an extension. An extension is nothing but a combination of a few letters after a file name.

In this example, file1.txt is the file name because it has a file extension .txt. Different files have different extensions based on the type of files they are. A text file would be .txt, a PowerPoint presentation would be .ppt, a word document would be .docx, and so on.

Therefore by finding the extension we can find the file name. But what about the remaining part? The remaining part after we remove the file path gives the location of the file within the system of the user.

In this example, it tells us that the file1.txt file is stored inside the Documents folder, which is stored inside the User1 folder, which itself is stored inside the Users folder which is lastly stored on the C drive of the computer. The entire name, the remaining part, and the file name together are called the Path.

But how do I read a filename from the path in Python?

03 Methods to get filename from path in Python

There are three methods that we can use to get the filename from a given path in python. Some of these methods use built-in functions, others use a module. A module is a collection of predefined functions that we can directly include in our code.

01) Split function in python

Any path that is passed to the interpreter will be a string value. A string value in python is nothing but a combination of characters. When a path is passed as an input, it will look like C:\Users\User1\Documents\file1.txt

Now we can use the built-in split function in python to split the path name. We will split the path name at every \. Once we do that, we will have a tuple that contains all the words between the slashes. Then we print the last element of the tuple and we get the filename with the extension.

We can further split the last element at the dot (.) to get just the filename and not the extension. The code implementation for this method to extract the filename from the path is shown below:

file_path = "C:/Users/User1/Documents/file1.txt"
file_name = file_path.split("/")[-1]
print(file_name)

 

Output:

file1.txt

 

02) OS module in python

As the name suggests, the OS module in python provides special functions and methods for operating system functionality like filename extraction. We can use the os.path.basename function to get the filename from the path given by the user.

Further, we can use the os.path.splitext function to get the filename without the extension. The code implementation using the os module is given below:

import os
file_path = "C:/Users/User1/Documents/file1.txt"
full_name = os.path.basename(file_path)
file_name = os.path.splitext(full_name)
print(full_name)
print(file_name[0])

 

Output:

file1.txt
file1

 

03) Using the Pathlib module in python

Besides the OS library, python also provides a library that is dedicated to handling different types of paths provided by different operating systems. Inside the pathlib library, we can use the Path function to get the filename from a given path.

The Path function has two attributes: stem and name. The stem attribute gives the filename without the extension and the name attribute gives the complete filename along with the extension. The code implementation using the path function is shown below:

from pathlib import Path
file_path = "C:/Users/User1/Documents/file1.txt"
full_name = Path(file_path).name
file_name = Path(file_path).stem
print(full_name)
print(file_name)

 

Output:

file1.txt
file1

 

You can now learn how to overwrite a file in python here.

Takeaways

Filename and path are important to be able to read and parse input from a file. Without the filename, it is impossible to read the contents or perform operations on the file. We learned 03 methods to get the filename from the path in python. We also provided the source code to do it yourself. Try it now!

FavTutor - 24x7 Live Coding Help from Expert Tutors!

About The Author
Abrar Ahmed
An ambivert individual with a thirst for knowledge and passion to achieve. Striving to connect Artificial Intelligence in all aspects of life. I am also an avid coder and partake in coding challenges all the time on Leetcode and CodeChef.