
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
__file__ (A Special Variable) in Python
Understanding the __file__ Special Variable
The __file__ variable in Python is a special attribute that stores the path to the current script or module from which it is accessed. It is automatically set by the Python interpreter when a script is executed or a module is imported.
This variable allows you to determine the exact location of the current file, irrespective of where the Python interpreter is run.
The value of the __file__ can be either a relative path or an absolute path, depending on how the script is executed. The __file__ variable contains the relative path to the script and absolute path to the module.
- For scripts that you run directly, it usually gives a path that is relative to where you started the program (i.e. current working directory).
- But when a file is imported as a module, it shows the full path to that file.
Using __file__ to Get the Directory of a Script
You can use the __file__ variable with the os module to get the absolute path of the script's directory (i.e. the folder where the current script is saved).
This helps when your script needs to open or work with other files in the same folder, irrespective of the directory from which the script is run.
Example
In this example, we use the os module to get the absolute directory path of the current script using the __file__ variable ?
import os # Get the absolute path of the current script script_dir = os.path.dirname(os.path.abspath(__file__)) # Print the script's directory print(f"Script directory: {script_dir}")
We get the output as shown below ?
Script directory: /home/cg/root/685b3d6083b40
Using __file__ to Build Paths to Other Files
You can use the __file__ variable to create full paths to files that are stored in the same folder or a subfolder of your script. This makes it easy to access data files or other resources no matter where the script is run from.
Example
In this example, we build a path to a file named data_file.txt located in a subfolder named data ?
import os # Get the directory of the current script script_dir = os.path.dirname(os.path.abspath(__file__)) # Create a path to a data file inside a 'data' subdirectory data_file = os.path.join(script_dir, "data", "data_file.txt") print(data_file)
Following is the output obtained ?
/home/cg/root/685b3d6083b40/data/data_file.txt
Using __file__ for Logging Script Location
You can use the __file__ variable to log the exact path of the script that is being executed. This is useful for debugging or tracking which file is running, especially when working with multiple scripts or modules.
Example
In this example, we log the value of __file__ using Python's built-in logging module ?
import logging # Set up logging configuration logging.basicConfig(level=logging.INFO) # Log the path of the current script logging.info(f"Running script from: {__file__}")
Following is the output of the above code ?
INFO:root:Running script from: /home/cg/root/685b3d6083b40/main.py
Conclusion
The __file__ variable helps you to find the exact location of your script or module on the system. It is especially useful when working with files or folders relative to your script, making your code more reliable no matter where it is run from.