PythonScript early return
-
@alan-kilborn
Yes this solution is very simple, I should have thought of it 😉. -
inspect.getframeinfo(inspect.currentframe()).filename.split(os.sep)[-1].rsplit('.', 1)[0]
This is abracadabra to me. To begin with, where can I find the attributes of the inspect class?
-
@paul-wormer Stupid question: I see that ‘inspect’ is a Python module.
-
I should have added that the “inspect” stuff is there because when I write scripts that use either
notepad.messageBox()
ornotepad.prompt()
functions, these bring up a dialog box, and take a parameter to specify the title bar; I like to put the script name there (typically), and rather than hardcode its name, I fetch it at runtime using “inspect”. Mymb()
function is a little helper function that “wraps”notepad.messageBox()
and shows this. -
@alan-kilborn OK thank you, you give me something to try out!
-
@paul-wormer I see “os.sep”, shouldn’t one “import os”?
-
@paul-wormer said in PythonScript early return:
I see “os.sep”, shouldn’t one “import os”?
Yes, good catch.
So the reason it doesn’t fail without it, for me, is that my startup.py (or something it imports) must import os.
I usually test all of my scripts in a “clean” setup before posting; this one seemed so simple, I guess I didn’t bother. :-(
PythonScripts are a bit different from the normal use case for Python – here, everything previously done is “remembered”.
-
@paul-wormer
So,import inspect, os inspect.getframeinfo(inspect.currentframe()).filename.split(os.sep)[-1].rsplit('.', 1)[0]
is wizardry just to get the script name without extension?
-
-
@alan-kilborn Just kidding. OK you helped me a lot, got wiser by the minute. I know now what to do, thank you again.
-
@paul-wormer
Next question: I have been googling and found an alternative for finding a filename:os.path.basename(os.path.abspath(__file__)).rsplit('.')[0]
This does not require importing inspect. I don’t doubt that you are aware of this solution, and since you are not using it, it must have its drawbacks. What are they?
-
@paul-wormer Or even shorter:
os.path.basename(__file__).rsplit('.')[0]
-
So, often when I post scripts here, I take something existing that I have (working for a need specific to me), and strip some things out. That’s the case here.
As we’re really trying to focus on Notepad++ and/or PythonScript specific stuff here, diving deeper into the ways of “inspect” or other such things really isn’t appropriate, as it is really not related to either.
In the spirit of fun coding, if you find what you think is a better way of doing something, I say “go for it!”.
-
-
@paul-wormer said in PythonScript early return:
I see “os.sep”, shouldn’t one “import os”?
I requested a forum moderator to add the missing
import os
to the script listing above, and that was done…thanks Mr. Moderator! -