Как вставить текст в python
Перейти к содержимому

Как вставить текст в python

  • автор:

Файлы. Работа с файлами.

Python 3 логотип

В данной статье мы рассмотрим встроенные средства python для работы с файлами: открытие / закрытие, чтение и запись.

Итак, начнем. Прежде, чем работать с файлом, его надо открыть. С этим замечательно справится встроенная функция open:

У функции open много параметров, они указаны в статье "Встроенные функции", нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл.
Режим Обозначение
‘r’ открытие на чтение (является значением по умолчанию).
‘w’ открытие на запись, содержимое файла удаляется, если файла не существует, создается новый.
‘x’ открытие на запись, если файла не существует, иначе исключение.
‘a’ открытие на дозапись, информация добавляется в конец файла.
‘b’ открытие в двоичном режиме.
‘t’ открытие в текстовом режиме (является значением по умолчанию).
‘+’ открытие на чтение и запись

Режимы могут быть объединены, то есть, к примеру, ‘rb’ — чтение в двоичном режиме. По умолчанию режим равен ‘rt’.

И последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.

Чтение из файла

Открыли мы файл, а теперь мы хотим прочитать из него информацию. Для этого есть несколько способов, но большого интереса заслуживают лишь два из них.

Первый — метод read, читающий весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (целым числом n).

Ещё один способ сделать это — прочитать файл построчно, воспользовавшись циклом for:

Запись в файл

Теперь рассмотрим запись в файл. Попробуем записать в файл вот такой вот список:

Откроем файл на запись:

 Запись в файл осуществляется с помощью метода write:
 

После окончания работы с файлом его обязательно нужно закрыть с помощью метода close:

 Теперь попробуем воссоздать этот список из получившегося файла. Откроем файл на чтение (надеюсь, вы поняли, как это сделать?), и прочитаем строки.
   Мы получили тот же список, что и был. В более сложных случаях (словарях, вложенных кортежей и т. д.) алгоритм записи придумать сложнее. Но это и не нужно. В python уже давно придумали средства, такие как pickle или json, позволяющие сохранять в файле сложные структуры.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Как вставить текст в python

Для добавления текста применяется метод insert() :

insert(index, chars)

Первый параметр представляет позицию вставки в формате "line.column" - сначала идет номер строки, а затем номер символа. Второй параметр - собственно вставляемый текст. Например, вставка в начало:

editor.insert("1.0", "Hello")

Для вставки в конец для позиции передается значение END :

from tkinter import * root = Tk() root.title("METANIT.COM") root.geometry("250x200") editor = Text() editor.pack(fill=BOTH, expand=1) editor.insert("1.0", "Hello World") # вставка в начало editor.insert(END, "\nBye World") # вставка в конец root.mainloop()

Добавление строк в виджет Test в tkinter и python

Получение текста

Для получения введенного текста применяется метод get() :

get(start, end)

Параметр start указывает на начальный символ, а end - на конечный символ, текст между которыми надо получить. Оба параметра в формате "line.colunm", где line - номер строки, а "column" - номер символа. Для указания последнего символа применяется константа END:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("300x200") editor = Text(height=5) editor.pack(anchor=N, fill=X) label=ttk.Label() label.pack(anchor=N, fill=BOTH) def get_text(): label["text"] = editor.get("1.0", "end") button = ttk.Button(text="Click", command=get_text) button.pack(side=BOTTOM) root.mainloop()

В данном случае по нажатию на кнопку срабатывает функция get_text() , которая получает текст и передается его для отображения в метку label:

Получение введенного текста из виджета Test в tkinter и python

Удаление текста

Для удаления текста применяется метод delete()

delete(start, end)

Параметр start указывает на начальный символ, а end - на конечный символ, текст между которыми надо удалить. Оба параметра в формате "line.colunm", где line - номер строки, а "column" - номер символа. Для указания последнего символа применяется константа END. Например, определим кнопку, которая будет удалять весь текст из виджета:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("300x200") editor = Text(height=10) editor.pack(anchor=N, fill=BOTH) def delete_text(): editor.delete("1.0", END) button = ttk.Button(text="Clear", command=delete_text) button.pack(side=BOTTOM) root.mainloop()

Замена текста

Для замены текста применяется метод replace() :

replace(start, end, chars)

Параметр start указывает на начальный символ, а end - на конечный символ, текст между которыми надо заменить. Оба параметра в формате "line.colunm", где line - номер строки, а "column" - номер символа. Для указания последнего символа применяется константа END. Последний параметр - chars - строка, на которую надо заменить. Например, замена первых четырех символов на строку "дама":

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("300x200") editor = Text(height=10) editor.pack(anchor=N, fill=BOTH) editor.insert("1.0", "мама мыла раму") def edit_text(): editor.replace("1.0", "1.4", "дама") button = ttk.Button(text="Replace", command=edit_text) button.pack(side=BOTTOM) root.mainloop()

Замена текста в виджете Test в tkinter и python

Повтор и отмена операций

Методы edit_undo() и edit_redo() позволяют соответственно отменить и повторить операцию (добавление, изменение, удаление текста). Данные методы применяются, если в виджете Text параметр undo равен True. Стоит отметить, что данные методы оперируют своим стеком операций, в котором сохраняются данные операций. Однако если стек для соответствующего метода пуст, то вызов метода вызывает исключение. Простейший пример, где по нажатию на кнопку вызывается отмена или возврат операции:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") root.grid_columnconfigure(0, weight = 1) root.grid_columnconfigure(1, weight = 1) root.grid_rowconfigure(0, weight = 1) editor = Text(undo=True) editor.grid(column = 0, columnspan=2, row = 0, sticky = NSEW) def undo(): editor.edit_undo() def redo(): editor.edit_redo() redo_button = ttk.Button(text="Undo", command=undo) redo_button.grid(column=0, row=1) clear_button = ttk.Button(text="Redo", command=redo) clear_button.grid(column=1, row=1) root.mainloop()

Выделение текста

Для управления выделением текста виджет Text обладает следующими методами:

  • selection_get() : возвращает выделенный фрагмент
  • selection_clear() : снимает выделение

Применим данные методы:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def get_selection(): label["text"]=editor.selection_get() def clear_selection(): editor.selection_clear() editor = Text(height=5) editor.pack(fill=X) label = ttk.Label() label.pack(anchor=NW) get_button = ttk.Button(text="Get selection", command=get_selection) get_button.pack(side=LEFT) clear_button = ttk.Button(text="Clear", command=clear_selection) clear_button.pack(side=RIGHT) root.mainloop()

В данном случае по нажатию на кнопку get_button срабатывает функция get_selection, которая передает в метку label выделенный текст. При нажатии на кнопку clear_button срабатывает функция clear_selection, которая снимает выделение.

События

Достаточно часто встречает необходимость обработки ввода текста. Для виджета Text определено событие > , которое срабатывает при изменении текста в текстовом поле. Однако оно срабатывает один раз. И в этом случае мы можем обработать стандартные события клавиатуры. Например, событие освобождения клавиши :

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def on_modified(event): label["text"]=editor.get("1.0", END) editor = Text(height=8) editor.pack(fill=X) editor.bind("", on_modified) label = ttk.Label() label.pack(anchor=NW) root.mainloop()

В данном случае при освобождении клавиши будет срабатывать функция on_modified , в которой метке label передается весь введенный текст:

обработка ввода текста в Tkinter и Python

Другую распространенную задачу представляет динамическое получение выделенного текста. В этом случае мы можем обработать событие > . Например, при выделении текста выведем выделенный фрагмент в метку Label:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def on_modified(event): label["text"]=editor.selection_get() editor = Text(height=8) editor.pack(fill=X) editor.bind(">", on_modified) label = ttk.Label() label.pack(anchor=NW) root.mainloop()

Как через Python вставить текст?

Можно ли Python вставлять текст или нет? Просто нужно вставить текст в блокнот, но почитав оказалось что пайтон не может вставлять текст. Это так?

  • Вопрос задан 27 нояб. 2023
  • 158 просмотров

1 комментарий

Простой 1 комментарий

StreamThread @StreamThread

Можно открыть txt файл стандартной функцией open и добавлять текстовые строки в конец файла:

#Открываем файл по указанному пути как txt_stream. 'r' в начале означает что строка интерпретируется как raw: спец символы такие как табуляция - /t и новая строка - /n игнорируются, и можно быть уверенным что путь к файлу будет прочитан верно. #'wa' вторым аргументом означает режим открытия файла: w - запись текста, a - добавление новых данных от англ append. with open(r'D://New Folder/TextFile.txt', 'wa') as txt_stream: # Записываем в конец файла одну строку. Спец символ /n прибавляется к тексту чтобы следующий текст начинался с новой строки. txt_stream.write('Одиночная строка.' + '/n'). # Подготавливаем список со строками, которые следует записать в файл. strings_list = [ 'Первая строка/n', 'Вторая строка/n', 'Третья строка/n' ] # Записываем строки в файл. txt_stream.writelines(strings_list)

Решения вопроса 1
Денис @DenisShahbazyan

Вот так можно вставить текст в окно блокнота.
Используется только одна внешняя библиотека "pip install pypiwin32" - для ее установки. (После установки перезапусти IDE)

import time import ctypes import win32con from ctypes import wintypes as w KEYEVENTF_SCANCODE = 0x8 KEYEVENTF_UNICODE = 0x4 KEYEVENTF_KEYUP = 0x2 SPACE = 0x39 INPUT_KEYBOARD = 1 # not defined by wintypes ULONG_PTR = ctypes.c_ulong if ctypes.sizeof( ctypes.c_void_p) == 4 else ctypes.c_ulonglong class KEYBDINPUT(ctypes.Structure): _fields_ = [('wVk', w.WORD), ('wScan', w.WORD), ('dwFlags', w.DWORD), ('time', w.DWORD), ('dwExtraInfo', ULONG_PTR)] class MOUSEINPUT(ctypes.Structure): _fields_ = [('dx', w.LONG), ('dy', w.LONG), ('mouseData', w.DWORD), ('dwFlags', w.DWORD), ('time', w.DWORD), ('dwExtraInfo', ULONG_PTR)] class HARDWAREINPUT(ctypes.Structure): _fields_ = [('uMsg', w.DWORD), ('wParamL', w.WORD), ('wParamH', w.WORD)] class DUMMYUNIONNAME(ctypes.Union): _fields_ = [('mi', MOUSEINPUT), ('ki', KEYBDINPUT), ('hi', HARDWAREINPUT)] class INPUT(ctypes.Structure): _anonymous_ = ['u'] _fields_ = [('type', w.DWORD), ('u', DUMMYUNIONNAME)] lib = ctypes.WinDLL('user32') lib.SendInput.argtypes = w.UINT, ctypes.POINTER(INPUT), ctypes.c_int lib.SendInput.restype = w.UINT def send_scancode(code): i = INPUT() i.type = INPUT_KEYBOARD i.ki = KEYBDINPUT(0, code, KEYEVENTF_SCANCODE, 0, 0) lib.SendInput(1, ctypes.byref(i), ctypes.sizeof(INPUT)) i.ki.dwFlags |= KEYEVENTF_KEYUP lib.SendInput(1, ctypes.byref(i), ctypes.sizeof(INPUT)) def send_unicode(s): i = INPUT() i.type = INPUT_KEYBOARD for c in s: i.ki = KEYBDINPUT(0, ord(c), KEYEVENTF_UNICODE, 0, 0) lib.SendInput(1, ctypes.byref(i), ctypes.sizeof(INPUT)) i.ki.dwFlags |= KEYEVENTF_KEYUP lib.SendInput(1, ctypes.byref(i), ctypes.sizeof(INPUT)) def find_notepad_window(notepad_title): while True: notepad_handle = ctypes.windll.user32.FindWindowW(None, notepad_title) if notepad_handle != 0: return notepad_handle time.sleep(1) def insert_text_into_notepad(notepad_handle, text): # Развернуть окно, если оно свернуто ctypes.windll.user32.ShowWindow(notepad_handle, win32con.SW_RESTORE) # Сделать окно активным ctypes.windll.user32.SetForegroundWindow(notepad_handle) # Изменить заголовок окна # ctypes.windll.user32.SendMessageW(notepad_handle, win32con.WM_SETTEXT, 0, text) # send_scancode(SPACE) # Текст в блокнот send_unicode(text) if __name__ == "__main__": notepad_title = "Безымянный – Блокнот" text_to_insert = "Привет, мир!" notepad_handle = find_notepad_window(notepad_title) insert_text_into_notepad(notepad_handle, text_to_insert)

Чтобы найти все окна в системе (все имена окон) запусти это

import ctypes def enum_windows_callback(hwnd, lParam): window_title = ctypes.create_unicode_buffer(1024) ctypes.windll.user32.GetWindowTextW(hwnd, window_title, 1024) print(f"Window Handle: , Window Title: ") return True ctypes.windll.user32.EnumWindows(ctypes.WINFUNCTYPE( ctypes.c_bool, ctypes.c_ulong, ctypes.c_ulong)(enum_windows_callback), 0)

Как вставлять текст в консоль из буфера обмена?

Author24 — интернет-сервис помощи студентам

При нажатии привычного для windows ctrl+v вставляется соответствующий символ, еще попробовал различные ctrl+alt+v, ctrl+insert, insert не помогло подскажите пожалуйста как происходит вставка содержимого из буфера?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как получить текст из буфера обмена?
Пишу макрос (Word), вот фрагмент кода: Selection.Copy Windows('EMA').Activate.

Как взять текст из буфера обмена?
Как сделать так, чтоб при нажатии на тестовое поле (<INPUT name=text>) его содержимое изменилось.

Как получить текст из буфера обмена
вот код как получить Clipboard.GetText(); чет оно не юзает внешние данные не из программы. as is.

Как получить текст из буфера обмена?
Господа и Дамы программисты, кто подскажет как средствами С# получить текст из буфера обмена? А еще.

Регистрация: 06.05.2013
Сообщений: 242

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

Если же вы пишите программу то её пишут или в IDE или обычном текстовом редакторе.
Кстати почему вам просто не использовать тупо IDLE которая идет в стандартом пакете при установке в windows? Там ctrl-v работает.

Регистрация: 04.11.2013
Сообщений: 117
Правой кнопкой мыши? (если в свойствах консоли стоит быстрая вставка)
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038

А какая консоль-то? Если линуксовая, Ctrl + Shift + V, а ещё проще - щёлкнуть кнопкой, чтобы вставить выделенный раньше кусок текста. Если виндовая, зачем вам вообще это угробище?

Регистрация: 21.09.2010
Сообщений: 87
shift+insert
127 / 126 / 59
Регистрация: 22.01.2014
Сообщений: 460

gnome-terminal у себя я на insert клавишу настроил. В Windows cmd надо использовать системное меню( клик по заголовку окна правой кнопкой мышки). Кажется вопрос не по Питону.
С IDLE я работал раньше. Сейчас использую geany - очень удобный редактор кода, я им очень доволен.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как вставить текст из буфера обмена в DBMemo
копирую текст с Memo и нужно его же вставить в DBMemo , но туда обычным DBMemo1.PasteFromClipboard;.

Как в ставить из буфера обмена текст в сторонние приложение?
Всем привет! Вопрос такой . Понятное дело, создал Форм1 в котором размещается текстбокс1 в.

Как в PHP получить текст из буфера обмена сервера?
На локальной машине нужно получить текст из буфера обмена. Вот допустим на сайте Х скопировал.

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

VBA Word как записать в переменную текст из буфера обмена?
Добрый день! Как сделать так, что бы в iLink записывалось содержимое буфера обмена? (макрос.

Free Pascal IDE, как вставить текст из буфера обмена?
Помогите. Скопировал код в интернете. Как его вставить в IDE Free Pascal? Он не вставляется не как.

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *