Notepad++ Plugin To Run Python Scripts
Yesterday I was writing a small Python script to read the YACC file and generate a list of all the specified rules inside it, so I don’t have to scroll through the long file to find out what rules are inside it
I use Notepad++ as my default text editor on Windows, and I was writing the script using it – Notepad++. I wanted to test if the script is working, so I ran an instance of Command Line Prompt, and as I was going to change the directory to the directory of the script I thought; “Why doesn’t Notepad++ have a Run In Python command in it?”. So as usual I got pissed off and decided to create my own plugin to have that command in Notepad++ 8)
The Reference
I searched on the net, I found this Notepad++ Plugin Template, I edited it a little bit and I managed to do it
You can read below about the process and how it works, but if you just came here to download it click here.
The Process
To run a Python script; the plugin must do the following:
- Get the path of the selected file in Notepad++.
- Get the path of Python executable file, since not everyone has Python in the PATH environment variable.
- Building the run command.
- Execute the run command.
Get The Path of The Selected File In Notepad++
I also searched the net and found the following code:
The function sends a message to Notepad++ asking it to save the file before trying to run it, the result of the message will be either 1 which means that the file was saved, or 0 which means that the file wasn’t.
Then the function sends a message to Notepad++ asking it to put the full path of the currently selected file into a specific variable.
Now a little problem occurs when the file is unmodified, and the problem is that the first message will return 0 which means that the file wasn’t saved, while the second message will return a valid file path. So the function will search the path for a backslash « which is the path separator in Windows, because a valid full path must contain at least one separator.
When the path is valid and the file is saved the function returns the path and sets the `ok` parameter to true, while in other cases it will return the path and set `ok` parameter to false.
Get The Path Of Python Executable File
The plugin will search for Python in its default path (“C:\Python[VER]”). If this method fails the plugin will search in registry for the key.
The Python installation path exists in the Windows Registry, so I wrote a small function to search the registry for the path and return it:
The code above accepts the root key as a parameter, and the code that calls it will call it twice, once with HKEY_CURRENT_USER and the other with HKEY_LOCAL_MACHINE , so it will try to find it in both locations HKEY_CURRENT_USER\Software\Python\PythonCore and HKEY_LOCAL_MACHINE\Software\Python\PythonCore .
Building The Run Command
The plugin allows the user to choose to run the file in interactive mode, so the window won’t disappear after the program is done. I’ve also added another thing, that is the ability to run the file in pythonw.exe instead of python.exe, and that’s for applications with GUI, so you don’t have to see a console window behind your application GUI
This one would be very simple, just concatenate: Python installation path, “python.exe” and the full path of the current file.
Execute The Run Command
This function accepts a path parameter so it will run the process in the specified path (which is the path of the folder that includes the Python file to run) instead of the default path, this allows applications reading/writing files inside the same folder (or a relative path) of the application path to find those files.
Скрипт для Notepad++ на Python
Думаю, многим известен — удобная бесплатная утилита, выступающая в качестве «продвинутой» замены стандартному Блокноту Windows. Как и при работе в любом текстовом редакторе, в Notepad++ время от времени возникает необходимость автоматизировать какие-либо повторяющиеся действия, которые в силу сложности логики невозможно записать как макрос. К счастью, для решения этой задачи нет необходимости переключаться из в, например, Word, дабы воспользоваться встроенным в него VB.
Среди плагинов для существуют расширения, реализующие возможность написания скриптов для на разных языках, таких как JavaScript, Lua, PHP или Python. Именно на последнем я и решил остановиться для решения своей задачи.
Постановка задачи
Предположим, перед нами стоит следующая задача (взята из жизни).
- пронумеровать символы ‘@’, находящиеся в начале строки, заменив ‘@’ на ‘@1’, ‘@2’ и т.д.;
- удалить пустые (включая пробелы и табуляцию) строки, идущие подряд по две и более.
3. Если в выделенном фрагменте текста (или во всём документе — в случае если нет выделения) отсутствует символ ‘@’, должно выводиться соответствующее сообщение об ошибке.
- по нажатию соответствующей кнопки на панели инструментов;
- с помощью клавиатурного сочетания;
- через контекстное меню правой кнопки мыши.
Решение
Для начала нам потребуется установить плагин для под названием Python Script. С его помощью можно производить любые операции с редактируемым текстом, открывать/закрывать файлы, переключать вкладки, выполнять команды меню и т.д. — одним словом, практически всё, что вообще можно сделать в .
Далее, выбрав в меню Plugins->Python Script->New Script, создаём скрипт:
Если мы назвали скрипт «Empty Lines And Count», то запустить его можно из меню Plugins->Python Script->Scripts->Empty Lines And Count. Чтобы добавить его кнопку на панель инструментов и сделать возможным запуск по клавиатурному сочетанию, в настройках плагина (Plugins->Python Script->Configuration) выбираем созданный нами скрипт и добавляем его в меню и на панель инструментов. Теперь после перезапуска соответствующая кнопка появится на панели инструментов.
Назначить скрипту сочетание клавиш можно в меню Settings->Shortcut mapper в разделе Plugin commands.
Чтобы добавить скрипт в контекстное меню , нужно в xml-файл настроек (Settings->Edit Popup ContextMenu) добавить в нужном вам месте (например, перед первым элементом) следующие строчки:

Вот и всё. Теперь даже рутинные действия со сложной логикой можно выполнять одним кликом.
Как запустить Python из Notepad++
В текстововм редакторе Notepad++ есть возможность запуск комманд через пункт в меню «Запуск (Run) F5». В том же меню можно сохранить эти команды как шорткаты. Таким образом можно запускать скрипты на Питоне, не надо никаких SDK устанавливать, самое простое это написать в Run:
Это подойдет для выполнения простого скрипта, но не всегда достаточно. Поскольку такое выполнение команды в Windows будет запущенно из папки выполняемой программы Notepad++. И если в вашем скрипте используется обращение к файлам относительно расположения самого скрипта, эти файлы не обнаружатся. Поэтому надо запускать выполнение не python а сточной консоли cmd с использованием оператора &, позволяющего выполнять команды друг за другом.
Правильная строчка для запуска редактируемого скрипта Python для команды Run в Notepad++:
cmd /c «cd /D $(CURRENT_DIRECTORY) & python «$(CURRENT_DIRECTORY)\$(FILE_NAME)»»
или, если надо для отладки не закрывать окно Python при закрытии окна выполняющегося скрипта, добавить ключ -i:
cmd /c «cd /D $(CURRENT_DIRECTORY) & python -i «$(CURRENT_DIRECTORY)\$(FILE_NAME)»»
Как выполнить файл Python в Notepad ++?
Откройте Блокнот ++. В меню перейдите: Выполнить -> Выполнить .. (F5). Печатать:
Теперь, вместо того, чтобы нажимать «Run», нажмите «Сохранить», чтобы создать для него ярлык.
- Если у вас есть Python 3.1: введите Python31 вместо Python26
- Добавьте -i , если хотите, чтобы окно командной строки оставалось открытым после завершения сценария
Второй вариант
Используйте пакетный скрипт, который запускает скрипт Python, а затем создайте ярлык для него из Notepad ++.
Третий вариант: (небезопасно)
Код открывает «HKEY_CURRENT_USER \ Software \ Python \ PythonCore», если ключ существует, он получит путь от первого дочернего ключа этого ключа.
Проверьте, существует ли этот ключ, а если нет, попробуйте создать его.
Я хотел бы избежать использования полного пути к каталогу python в макросе Notepad ++. Я пробовал другие решения, приведенные на этой странице, они потерпели неудачу.
На моем ПК работает:
В Блокноте ++ нажмите F5.
Скопируйте / вставьте это:
Вы можете запустить свой скрипт через cmd и находиться в каталоге скриптов:
Если кому-то интересно передать аргументы в cmd.exe и запустить скрипт python в виртуальной среде, я использовал следующие шаги:
В Блокноте ++ -> Выполнить -> Выполнить введите следующее:
Здесь я перехожу в каталог, в котором существует файл .py, так что он позволяет получить доступ к любым другим соответствующим файлам, которые находятся в каталоге кода .py.
И на файл .bat у меня есть:
В Notepad ++ перейдите в Выполнить → Выполнить . , выберите путь и idle.py файл вашей установки Python:
Добавить пробел и это:
Я начал использовать Notepad ++ для Python совсем недавно и нашел этот метод очень простым. Когда вы будете готовы запустить код, щелкните правой кнопкой мыши вкладку вашего кода в окне Notepad ++ и выберите «Открыть папку с содержимым в cmd». Это откроет командную строку в папке, где хранится текущая программа. Все, что вам нужно сделать сейчас, это выполнить:
Это было сделано на Notepad ++ (сборка 10 января 2015 г.).
Моя проблема заключалась в том, что, как было упомянуто copeland3300, мой скрипт запускается из папки notepad ++, поэтому невозможно было найти другие файлы проекта, такие как файл базы данных, модули и т. Д. Я решил проблему с помощью стандартной команды «Выполнить» notepad ++ ( F5) и набрав:
Питон был в моем пути. Окно Cmd оставалось открытым после завершения скрипта.
Есть одна проблема, которую я не видел, решен в вышеупомянутых решениях. Python устанавливает текущую рабочую директорию, где бы вы ни запускали интерпретатор. Если вам нужно, чтобы текущий рабочий каталог совпадал с тем, в котором вы сохранили файл, тогда вы можете нажать F5 и набрать:
За исключением того, что вы заменили бы C: \ Users \ username \ Python36-32 \ python.exe на любой путь к интерпретатору python на вашем компьютере.
По сути, вы запускаете командную строку, меняете каталог на каталог, содержащий файл .py, который вы пытаетесь запустить, и затем запускаете его. Вы можете связать столько командных строк, сколько хотите, с помощью символа «&».
Нет ответа здесь, или плагин, который я нашел при условии, что я хотел. Минималистский метод запуска моего кода на Python, который я написал на Notepad ++ с помощью ярлыка, желательно без плагинов.
У меня есть Python 3.6 (64-разрядная версия), для Windows 8.1 x86_64 и Notepad ++ 32bit. После того, как вы напишите свой скрипт на Python в Notepad ++ и сохраните его, нажмите F5 для Run . Затем написать:
И нажмите кнопку «Выполнить». Флаг i заставляет терминал оставаться неподвижным после завершения выполнения кода, чтобы вы могли его проверить. Эта команда запустит скрипт в терминале cmd, и терминал все еще будет лежать там, пока вы не закроете его, введя exit() .
Вы можете сохранить это в ярлык для удобства (у меня CTRL + SHIFT + P).
Я хотел бы, чтобы люди здесь публиковали шаги, а не только общие концепции. В конце концов я получил версию cmd / k для работы.
- В АЭС нажмите на пункт меню: Запустить
- В подменю, нажмите на: Выполнить
- В диалоговом окне «Выполнить . » в поле «Программа для запуска» удалите любой существующий текст и введите: cmd / K «$ (FULL_CURRENT_PATH)». Параметр / K является необязательным, он сохраняет открытым окно, созданное при запуске сценария. , если ты этого хочешь.
- Нажмите кнопку Сохранить .
- Откроется диалоговое окно «Ярлык»; Заполните его, если вы хотите сочетание клавиш (есть примечание «Это отключит ускоритель», что бы это ни было, поэтому, возможно, вы не хотите использовать сочетание клавиш, хотя, вероятно, вам не помешает назначить его, когда вы не нужен ускоритель). Где-то, я думаю, вы должны сообщить NPP, где находится файл Python.exe (например, для меня: C: \ Python33 \ python.exe). Я не знаю, где и как вы это делаете, но, пробуя разные вещи здесь, я смог это сделать — я не помню, какая попытка сработала.
Я использую плагин NPP_Exec (находится в диспетчере плагинов). Как только это будет установлено, откройте окно консоли (ctrl +
Это запустит командную строку. Затем введите:
Выполнить текущий файл, с которым вы работаете.
Все ответы для опции меню Run-> Run идут с ключом «/ K» команды cmd, чтобы терминал оставался открытым, или «-i» для python.exe, так что python принудительно запускает интерактивный режим — оба сохраняют вывод для вас. наблюдать.
И все же в cmd /k вы должны набрать exit , чтобы закрыть его, в python -i — quit() . Если это слишком много печатать по вашему вкусу (для меня это точно :), команда Run для использования является
C:\Python27\python.exe — очевидно, полный путь к вашей установке Python (или просто python , если вы хотите использовать первый исполняемый файл в пути вашего пользователя).
& — это безусловное выполнение следующей команды в Windows — безусловное, поскольку она выполняется независимо от RC предыдущей команды ( && равен «и» — запускаться только в случае успешного завершения предыдущей операции, <
pause — печатает «Нажмите любую клавишу, чтобы продолжить . » и ожидает любую клавишу (этот вывод может быть подавлен при необходимости).
exit — ну, тип выхода для вас 🙂
Таким образом, в конце cmd запускается python.exe , который выполняет текущий файл и держит окно открытым, pause ждет, пока вы нажмете любую клавишу, и exit наконец закрывают окно как только вы нажмете любую клавишу.
Ни одно из ранее предложенных решений не сработало для меня. Небольшая модификация необходима.
После нажатия клавиши F5 в Notepad ++ введите:
Командная строка остается открытой, чтобы вы могли видеть результаты своего сценария.
В меню выберите: «Выполнить» -> «Выполнить . » (или просто нажмите F5 ).
Для Python 2 введите:
Для Python 3 введите:
Ссылки:
Чтобы лучше понять команду py :
Еще одна полезная ссылка для понимания команды py : Как запустить Python 2 и 3 в Windows 7?
Благодаря Reshure за его ответ, благодаря которому я оказался на правильном пути, чтобы понять это.
Сначала установите Python из https://www.python.org/downloads/
** ВАЖНО ** Не забудьте проверить оба:
- Установить лаунчер для всех пользователей
- Добавить Python 3.6 к пути
Нажмите «Установить сейчас» и завершите установку.
Откройте notepad ++ и установите плагин PyNPP из диспетчера плагинов. Я использую N ++ 6.9.2
Сохранить новый файл как new.py
Нажмите Alt + Shift + F5
Вот что у меня сработало:
Откройте Блокнот ++ и нажмите F5. Вы получите небольшое всплывающее окно: