Community
    • Login

    PythonScript early return

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    17 Posts 2 Posters 911 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Paul WormerP
      Paul Wormer @Alan Kilborn
      last edited by

      @alan-kilborn
      Yes this solution is very simple, I should have thought of it 😉.

      1 Reply Last reply Reply Quote 1
      • Paul WormerP
        Paul Wormer @Alan Kilborn
        last edited by

        @alan-kilborn

        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 WormerP 2 Replies Last reply Reply Quote 0
        • Paul WormerP
          Paul Wormer @Paul Wormer
          last edited by

          @paul-wormer Stupid question: I see that ‘inspect’ is a Python module.

          Alan KilbornA 1 Reply Last reply Reply Quote 0
          • Alan KilbornA
            Alan Kilborn @Paul Wormer
            last edited by Alan Kilborn

            @paul-wormer

            I should have added that the “inspect” stuff is there because when I write scripts that use either notepad.messageBox() or notepad.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”. My mb() function is a little helper function that “wraps” notepad.messageBox() and shows this.

            Paul WormerP 1 Reply Last reply Reply Quote 1
            • Paul WormerP
              Paul Wormer @Alan Kilborn
              last edited by

              @alan-kilborn OK thank you, you give me something to try out!

              Paul WormerP 1 Reply Last reply Reply Quote 1
              • Paul WormerP
                Paul Wormer @Paul Wormer
                last edited by

                @paul-wormer I see “os.sep”, shouldn’t one “import os”?

                Alan KilbornA 2 Replies Last reply Reply Quote 2
                • Alan KilbornA
                  Alan Kilborn @Paul Wormer
                  last edited by Alan Kilborn

                  @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”.

                  1 Reply Last reply Reply Quote 2
                  • Paul WormerP
                    Paul Wormer @Paul Wormer
                    last edited by

                    @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 KilbornA 1 Reply Last reply Reply Quote 0
                    • Alan KilbornA
                      Alan Kilborn @Paul Wormer
                      last edited by

                      @paul-wormer said in PythonScript early return:

                      is wizardry

                      ???

                      No wizardry, just code.

                      Paul WormerP 1 Reply Last reply Reply Quote 0
                      • Paul WormerP
                        Paul Wormer @Alan Kilborn
                        last edited by

                        @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 WormerP 1 Reply Last reply Reply Quote 2
                        • Paul WormerP
                          Paul Wormer @Paul Wormer
                          last edited by

                          @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 WormerP 1 Reply Last reply Reply Quote 1
                          • Paul WormerP
                            Paul Wormer @Paul Wormer
                            last edited by

                            @paul-wormer Or even shorter:

                            os.path.basename(__file__).rsplit('.')[0]
                            
                            Alan KilbornA 1 Reply Last reply Reply Quote 0
                            • Alan KilbornA
                              Alan Kilborn @Paul Wormer
                              last edited by

                              @paul-wormer

                              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!”.

                              1 Reply Last reply Reply Quote 0
                              • Michael VincentM Michael Vincent referenced this topic on
                              • Alan KilbornA
                                Alan Kilborn @Paul Wormer
                                last edited by

                                @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!

                                1 Reply Last reply Reply Quote 2
                                • Alan KilbornA Alan Kilborn referenced this topic on
                                • First post
                                  Last post
                                The Community of users of the Notepad++ text editor.
                                Powered by NodeBB | Contributors