Get name of current script in Python
You can use __file__
to get the name of the current file. When used in the main module, this is the name of the script that was originally invoked.
If you want to omit the directory part (which might be present), you can use os.path.basename(__file__)
.
How do I get the path and name of the file that is currently executing?
p1.py:
execfile("p2.py")
p2.py:
import inspect, os
print (inspect.getfile(inspect.currentframe())) # script filename (usually with path)
print (os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))) # script directory
get script directory name - Python
import os
os.path.basename(os.path.dirname(os.path.realpath(__file__)))
Broken down:
currentFile = __file__ # May be 'my_script', or './my_script' or
# '/home/user/test/my_script.py' depending on exactly how
# the script was run/loaded.
realPath = os.path.realpath(currentFile) # /home/user/test/my_script.py
dirPath = os.path.dirname(realPath) # /home/user/test
dirName = os.path.basename(dirPath) # test
python how to get a running script's file name in import package
You should be able to use arguments to work it out.
from sys import argv
print(argv[0])
The first argument listed will be the command used to execute your script.
So if you're running ./main.py
then that's what you'll get.
If you're running it via python (such as python main.py
) then (at least according to my testing) you'll get the full path. You can use the tools in os.path
to pluck out just the filename if required.
Find the current directory and file's directory
To get the full path to the directory a Python file is contained in, write this in that file:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
(Note that the incantation above won't work if you've already used os.chdir()
to change your current working directory, since the value of the __file__
constant is relative to the current working directory and is not changed by an os.chdir()
call.)
To get the current working directory use
import os
cwd = os.getcwd()
Documentation references for the modules, constants and functions used above:
- The
os
andos.path
modules. - The
__file__
constant os.path.realpath(path)
(returns "the canonical path of the specified filename, eliminating any symbolic links encountered in the path")os.path.dirname(path)
(returns "the directory name of pathnamepath
")os.getcwd()
(returns "a string representing the current working directory")os.chdir(path)
("change the current working directory topath
")
How can I find script's directory?
You need to call os.path.realpath
on __file__
, so that when __file__
is a filename without the path you still get the dir path:
import os
print(os.path.dirname(os.path.realpath(__file__)))
How to get the name of the top most (entry) script in python?
Having switch my Google query to "how to to find the process name from python" vs how to find the "top level script name", I found this overly thorough treatment of the topic. The summary of which is the following:
import __main__
import os
appName = os.path.basename(__main__.__file__).strip(".py")
Related Topics
Why Does This Not Work as an Array Membership Test
Check If a Number Is Int or Float
Django Rest Framework Upload Image: "The Submitted Data Was Not a File"
Check What Files Are Open in Python
Board-Drawing Code to Move an Oval
How to Find Where Python Is Installed on Windows
Regular Expressions: Search in List
How to Force Django to Ignore Any Caches and Reload Data
Beautifulsoup - Search by Text Inside a Tag
How to Change the Python Version in Visual Studio Code
Differencebetween .Quit and .Quit in Pygame
How Does This Input Work with the Python 'Any' Function
Django Aggregation: Summation of Multiplication of Two Fields
Numpy.Unique with Order Preserved
Setting an Environment Variable in Virtualenv