You actually have several options. Of these I present to you three:
import os    
print(os.path.basename(__file__))
import sys
print (sys.argv[0])]
print (__file__)
There is a discussion interesting in the OS regarding the pros and cons of the use of each one. Worth consulting. 
Where:
__file__ is the name of the file path from which the module was loaded, if it was loaded from a file. The __file__attribute can
  be missing for certain types of modules such as C modules that are
  statically linked to the interpreter; for extension modules
  dynamically loaded from a shared library, is the
  path name of shared library file.
argv[0] is the name of the script (depends on the operating system if this is a
  path name or not). If the command was executed using the
  option -c command line for the interpreter, argv[0] will be set to the string '-c'. If no script name has been passed to the
  python interpreter, argv[0] is the empty string.
The information that made up this reply was removed from here. I thank the user Yoel.