Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31

Взаимодействие с другими программами

19.03.2024, 14:34. Показов 1015. Ответов 16

Студворк — интернет-сервис помощи студентам
Здравствуйте, господа!
У меня возник вопрос:
Открываю Notepad++, в котором загружен текстовый файл (в моем случае *.py), выделяю какие-либо строки и например нажимаю какую-то кнопку (в Notepad++ и других подобных IDE они стандартно прикручиваются через команды запуска). И должно произойти чудо запустился терминал питона с только с выделенными строками (т.е. должен запуститься не весь файл *.py, а только выделенный фрагмент). Подобное решение есть в расширении VS CODE.
Но чуда нет!
Мои мысли:
  1. Наверное надо как-то получить выделенный текст в Notepad++ и сохранить его во временный файл temp.py, который потом запустить в cmd или BAT, но я не знаю как получить выделенный текст.
  2. Пробовал использовать буфер обмена
    Python
    1
    
    keyboard.send('ctrl + c')
    , тоже не очень работает (будет новая тема).

У кого, какие мысли? Спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2024, 14:34
Ответы с готовыми решениями:

Взаимодействие с программами
Как взаимодействовать с другими программами? Например открыть блокнот и записать туда текст.

Взаимодействие сервиса с другими программами
Добрый день. Пишу сервис (при создании проекта был выбран шаблон "Windows Service", соответственно всё делается через TService). ...

Взаимодействие с другими программами - включить на воспроизведение следующее видео в плеере
Здравствуйте. хочу написать программу, которая будет по таймеру переключать проигрываемый файл, в видео плеере, на следующий в плейлисте....

16
 Аватар для volodin661
6677 / 2270 / 346
Регистрация: 10.12.2013
Сообщений: 7,840
20.03.2024, 15:39
Цитата Сообщение от Rauss Посмотреть сообщение
Открываю Notepad++
но ведь есть и настоящие редакторы.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
20.03.2024, 15:43
Лучший ответ Сообщение было отмечено Rauss как решение

Решение

Rauss,
Python
1
2
3
4
# Получаем выделенный текст
text = editor.getSelText()
# Если текст не выделен, тогда сообщаем об ошибке
if not text: print("текст в документе не выделен, это ошибка")
это пример работы плагина Notepad++
1
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31
03.04.2024, 12:32  [ТС]
Для Notepad++ использование плагина Python Script решает проблемы (жаль, что он на Python 2.7.18, пришлось чуток заморочиться с кодированием). Но в результате сделал симбиоз Питонов 2 и 3, который позволяет выполнять и выделенные строки и целый файл. Для интереса выполняет вывод и py и Bat файлов, правда вывод делаю на cmd (мне показалось, так привычнее для глаз)
Вообщем СПАСИБО!
PS Если это принято на форуме или кому-нибудь нужно, я могу выложить код (у меня и свои интересы: Хочу получить советы и дружественную критику.)
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
03.04.2024, 12:37
Цитата Сообщение от Rauss Посмотреть сообщение
Python Script решает проблемы (жаль, что он на Python 2.7.18
как-то я спрашивал в своём топике, юзер iSmokeJC говорил, что якобы можно обновить - но не более того, примеров не привёл
Цитата Сообщение от Rauss Посмотреть сообщение
Если это принято на форуме или кому-нибудь нужно, я могу выложить код (у меня и свои интересы: Хочу получить советы и дружественную критику.)
ну конечно выложите-у меня тоже есть интересы)), спасибо
0
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31
03.04.2024, 12:56  [ТС]
Скрипт для Notepad++ (python 2.7.18), очень простой. Фактически он создает временные файлы в различной кодировке и после этого запускает скрипт вывода.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-
from Npp import editor, notepad 
import os, codecs
# Плагин на python 2.7.18
text = editor.getSelText() # Выделенный фрагмент или пустая строка, если ничего не выделено
fileNameFull = notepad.getCurrentFilename() # Полное имя файла открытого и активного в Notepad++ 
fileName = fileNameFull[fileNameFull.rfind('\\')+1:] # Вырезаю имя простое имя файла
fileExp = fileNameFull[fileNameFull.rfind('.')+1:] # Вырезаю расширение файла
 
os.chdir('c:\portabl\Notepad++\NotepadPortable\App\Notepad\plugins\Config\PythonScript\scripts') # Делаю ону и ту же директорию текушей, чтобы не возиться с путями
 
if text: # Что будет добавляться в темповый файл, взависимости от выделения
    prefix = ' Фрагмент файла '
else:
    prefix = ' Запуск файла '
 
def createTmpFileBat(txt):
    with codecs.open('tmpCodeRunnerFile.bat',"w", encoding='cp866') as tcr: # открываю в ='cp866', такая у меня кировка chcp > Текущая кодовая страница: 866 
        tcr.write('@echo off\n') # В начало темпового файла добавляю строки
        tcr.write(u'REM ' + prefix.decode('utf-8') + fileName.decode('utf-8') + '\n')
        tcr.write(u'REM Файл ('+fileNameFull.decode('utf-8') + ')\n' )
        tcr.write(u'REM *********************************\n\n' )
        tcr.write(txt.decode('utf-8')) # Потом добавляю или выделенный фрагмент или весь файл, если ничего не выделено
    os.system('python.exe runPython3.py tmpCodeRunnerFile.bat')
        
 
def createTmpFilePy(txt):
    with open('tmpCodeRunnerFile.py',"w") as tcr:
        tcr.write('#'+ prefix + fileName + '\n')
        tcr.write('# Файл ('+fileNameFull + ')\n' )
        tcr.write('# *********************************\n\n' )
        tcr.write(txt)
    os.system('python.exe runPython3.py tmpCodeRunnerFile.py')
 
 
 
if fileExp=='bat':
    if text:
        createTmpFileBat(editor.getSelText())
    else:
        createTmpFileBat(editor.getText())
if fileExp=='py':
    if text:
        createTmpFilePy(editor.getSelText())
    else:
        createTmpFilePy(editor.getText())
Скрипт вывода в консоль (Python 3.8.10), тоже не сложный, но у меня есть сомнения правильности вывода (хотя я старался переложить работу на cmd, например использовать PAUSE). Очень хотел бы услышать другие варианты решения!

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys, os
 
os.chdir(r'c:\portabl\Notepad++\NotepadPortable\App\Notepad\plugins\Config\PythonScript\scripts') # Делаю ону и ту же директорию текушей, чтобы не возиться с путями
#
fileExp = sys.argv[1][sys.argv[1].rfind('.')+1:]# расширение переданного файла
 
def openFileBat():
    with open(sys.argv[1], 'r',encoding='cp866') as tcr:
        tcr.readline()# Пропуск @echo off
        title = tcr.readline()[4:].rstrip('\r\n')
        os.system(f'start cmd.exe /T:f1 /K "echo. & "{sys.argv[1]}" & echo. & title {title} & echo. &  pause & exit"')
 
def openFilePy():
    with open(sys.argv[1], 'r', encoding='utf-8') as tcr:
        title = tcr.readline()[2:].rstrip('\r\n')
        print(title)
        os.system(f'start cmd.exe /T:f1 /K "cls & python.exe "{sys.argv[1]}" & echo. & title {title} & echo. & pause && exit"') 
 
if fileExp=='bat':
    openFileBat()
if fileExp=='py':
    openFilePy()
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
03.04.2024, 13:19
как это Вы комменты делаете
Цитата Сообщение от Rauss Посмотреть сообщение
Скрипт для Notepad++ (python 2.7.18)
и
Цитата Сообщение от Rauss Посмотреть сообщение
Скрипт вывода в консоль (Python 3.8.10)
я считал(ю) что если на 3.8 работает то нафиг нужен скрпит на 2.7
вы что их по разному запускаете - с разных движков?
жаль я забыл как я всё это начинал......
вроде с инета скачал плагин Python Script для Notepad++ и устанавливал его на ПК и потом у меня был доступ к Python Script и в этом случае сам Python НЕ нужен, так?
а скрипт работающий на Python 3.8 это зер гут - наличие эф строк например
0
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31
03.04.2024, 13:56  [ТС]
Не много не понял...
На ПК у меня только один Питон 3.8.
При установке плагина PythonScript на Notepad++ в редактор интегрируется библиотека python 2.7.18, в которой есть модули Npp (см. стр 2 первого скрипта). Они и позволяют сохранять выделение в редакторе. Импортировать Npp в питоне 3.8 у меня не получилось. По-этому, я в Notepad++ выделяю фрагмент, жамкую на кнопку скрипта1 и он после создания временного файла, запускает Питон 3.8 (см. стр 24, 33 первого скрипта).

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
вроде с инета скачал плагин Python Script для Notepad++ и устанавливал его на ПК и потом у меня был доступ к Python Script и в этом случае сам Python НЕ нужен, так?
Мне как раз питон 3.8. нужен, я ведь его изучаю. Notepad++ же нужен только для быстрого запуска фрагмента кода, чтобы не "тревожить" без нужды VS CODE.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
03.04.2024, 14:07
2
мне кажется зря связались с Python Script при таких задачах.........
я имею выделенный текст в Notepad++ и запускаю скрипт
и скрпит делает нужное и тут же - в этом файле или печатает в файле или в консоли нужное
а раз вы пишите результаты в другом файле то я бы лично НЕ связывался с Python Script а делал бы напрямую с самого Python, одна только проблема как в Python узнать как в некотором файле в Notepad++? мне кажется можно это решить пусть и придётся приложить голову))

Добавлено через 3 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
наличие эф строк
у вас работает? если нет - значит это не питон 3.8-помоему так
Цитата Сообщение от Rauss Посмотреть сообщение
чтобы не "тревожить" без нужды VS CODE
я юзаю пайчарм и проблем не вижу-наоборот при его отсутствии наверное эти проблемы будут

Добавлено через 4 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
наличие эф строк
если добавить строку:
Python
1
print(f"конец обработки файла {fileNameFull}")
у вас такая ошибка:
File "C:\Users\q8902\AppData\Roaming\NOTEPA~1 \plugins\Config\PYTHON~1\scripts\7A7E~1. PY", line 536
print(f"конец обработки файла {fileNameFull}")
^
SyntaxError: invalid syntax
в консоли Notepad++?
0
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31
03.04.2024, 16:40  [ТС]
Снова туплю... Не понял...
Скрипты стопудово рабочие
См. ScreenSoot

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
я юзаю пайчарм и проблем не вижу-наоборот при его отсутствии наверное эти проблемы будут
Что лучше пайчарм или VS CODE можно спорить долго и упорно. Во всяком случае VS CODE бесплатный и ОЧЕНЬ популярный, а пайчарм наверное под windows 7 и не пойдет.
И еще мне совсем не нужно что-то делать в этом файле. Я просто хочу завести БД своих наработок и иметь инструмент для их просмотра (в том числе и фрагментов), чтобы быстро просмотреть результат.

PS.
  1. Моя задача: база полезных кусков кода (реализовано на CherryTree)
  2. Там есть описание и ссылки на файлы, которые будут открываться в Notepad++
  3. А Notepad++ будет выводить результат либо выделенных строк, либо всего файла
  4. А я буду вспоминать и умнеть
Миниатюры
Взаимодействие с другими программами  
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
03.04.2024, 16:49
понял, не ответили:
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
если добавить строку:
PythonВыделить код
1
print(f"конец обработки файла {fileNameFull}")
у вас такая ошибка:
File "C:\Users\q8902\AppData\Roaming\NOTEPA~1 \plugins\Config\PYTHON~1\scripts\7A7E~1. PY", line 536
print(f"конец обработки файла {fileNameFull}")
^
SyntaxError: invalid syntax
в консоли Notepad++?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.04.2024, 17:18
Цитата Сообщение от Rauss Посмотреть сообщение
пайчарм наверное под windows 7 и не пойдет
Пойдет
Цитата Сообщение от Rauss Посмотреть сообщение
VS CODE бесплатный
Пайчарм комьюнити тоже
Цитата Сообщение от Rauss Посмотреть сообщение
CherryTree
Одобряю
Цитата Сообщение от Rauss Посмотреть сообщение
PS.
Какая-то замороченая схема. Я себе писал подобную тулзу, немножко с другим функционалом, но с такой же сутью. При нажатии определенной горячей клавиши, запускается питон-скрипт, который забирает выделенный текст (причем, совершенно до лампочки, где он выделен - в черри, блокноте, браузере...), редактирует его нужным мне образом, записывает текст обратно и завершает работу. В твоем случае необязательно создавать временный питон-файл и запускать его. Достаточно например запустить батник, с помощью которого запустить питон и скормить ему полученный текст, обернув его eval().
0
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31
03.04.2024, 17:54  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Пойдет
На вкус и цвет... Зачем менять IDE? Если сможете показать, что-нибудь ВЫДАЮЩЕЕ я подумаю!

Цитата Сообщение от iSmokeJC Посмотреть сообщение
Одобряю
У меня CherryTree 0.39.3 и он имеет проблемы с русскими именами файлов. Случайно не знаете как решить?


Цитата Сообщение от iSmokeJC Посмотреть сообщение
Какая-то замороченая схема. Я себе писал подобную тулзу, немножко с другим функционалом, но с такой же сутью. При нажатии определенной горячей клавиши, запускается питон-скрипт, который забирает выделенный текст (причем, совершенно до лампочки, где он выделен - в черри, блокноте, браузере...)
А вот тут интереснее. Как это реализовывается?

Спасибо!

Добавлено через 4 минуты
Я правда не понял, что у меня не так!? Извините!
Ошибок правда нет!
Спасибо!

Добавлено через 6 минут
Ципихович Эндрю, Я просто не понимаю, что у меня не так!?
Не судите строго, скрипты работают нормально!
Спасибо!
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
03.04.2024, 20:45
Цитата Сообщение от Rauss Посмотреть сообщение
Я просто не понимаю, что у меня не так!?
так и я пытаюсь понять, посему ответьте на сообщение 11
и будет ясно питон 2-й у вас или питон 3-й работает в Блокноте++, думаю, что 2-й ........., хотя вы считаете, что 3-й
0
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31
04.04.2024, 11:55  [ТС]
Здравствуйте!
В ответе 8, я уже писал что в Блокноте++ при установке плагина у меня интегрируется Python 2.7.18.
Я никогда не считал, что в в Блокноте++ Python 3. В том же ответе я писал, что
Цитата Сообщение от Rauss Посмотреть сообщение
На ПК у меня только один Питон 3.8.
, (ПК - это персональный компьютер )
Специально для Вас и для себя даю в консоли Блокнота++ команду
Python
1
2
import sys
print(sys.version_info)
и естественно получаю результат: 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:19:08) [MSC v.1500 32 bit (Intel)]

В cmd.exe даю команду:
Code
1
python -V
и получаю результат Python 3.8.10
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
04.04.2024, 12:43
Rauss, дело ваше, но я был не стал в 2024 г. юзать питон ниже 3-го

Добавлено через 33 минуты
Цитата Сообщение от Rauss Посмотреть сообщение
и естественно получаю результат: 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:19:08) [MSC v.1500 32 bit (Intel)]
странно у меня ответ:
sys.version_info(major=2, minor=7, micro=18, releaselevel='final', serial=0)
0
2 / 2 / 0
Регистрация: 28.01.2024
Сообщений: 31
05.04.2024, 10:28  [ТС]
Я тоже не юзаю.
Я изучаю Питон Python 3.8.10, а Питон 2.7.18 (он просто установился в Блокноте ++) мне был нужен только для решения одноразовой акции, которую я указал в своей теме.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2024, 10:28
Помогаю со студенческими работами здесь

Управление другими программами
Всем привет. Есть программа-каталог. Задача написать скрипт, который инициировал бы управление элементов управления в окне этой программы...

Управление другими программами
Всем привет. Вопрос из области - управление другими программами. Есть прога "карта местоности"; При нажати правой клавиши...

Как взаимодействовать с другими программами?
Вообщем, может для кого-то вопрос покажется странным, "дебильным", но Я недавно задумался: а как собственно взаимодействовать с другими...

Как взаимодействовать с другими программами ?
как взаимодействовать с другими программами ?. например с браузером хром допустим вписать текст в поле для поиска на странице...

Конфликт принтера с другими программами
При попытке распечатать текст в Worde, программа закрывается и выскакивает окно: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru