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

Как сделать, чтобы input() не останавливал программу

23.11.2020, 16:33. Показов 3297. Ответов 3

Студворк — интернет-сервис помощи студентам
Привет, делаю что-то на подобие чата, это программа которая связывается с другой программой.
Мне нужно чтобы 1 программа принимала, и в это же время могла отдавать значения. Т.е чтобы input()
не останавливал программу. Я находил решения в интернете, что привело к новой проблеме, немного решив старую.
Вот код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Input(Thread): 
        def run(self):
            while True:
 
                maininput = input(">> ") 
 
                if maininput == 'qquit':
                    mainmenu()
 
                monitorin = open(r"C:\Users\User\Desktop\chat\#DataBase\PreMonitor.txt", 'w', encoding='utf-8')
                monitorin.write(maininput)
                monitorin.close()
                time.sleep(2)
 
                chat()
Оно работает. Но когда я пишу из другой программы в эту. То оно выводит не одно значение, а 3 или больше. Т.е будто print()
проскальзывает и цикл не успевает остановиться.

Вот сам вывод(то что я пишу из другой программы):

Python
1
2
3
4
5
6
with open(r"C:\Users\User\Desktop\chat\#DataBase\PostMonitor.xml", encoding='utf-8') as file:
    displayport = file.readline()
    f1fa = open(r"C:\Users\User\Desktop\chat\#DataBase\PostMonitor.xml", 'w', encoding='utf-8')
    f1fa.close() 
 
    print(displayport)# Вывод из другой программы
Мне нужен вывод:
>
От <любое имя>: текст
>и тут я могу что-то написать

а получается:
>
>
>

От <любое имя>: текст
От <любое имя>: текст
От <любое имя>: текст
От <любое имя>: текст

>

Вот вся функция:

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
def chat():
    import os
    import time
    from threading import Thread
 
    class Input(Thread):
        def run(self):
            while True:
                maininput = input(">> ")
 
                if maininput == 'qquit':
                    mainmenu()
 
                monitorin = open(r"C:\Users\User\Desktop\chat\#DataBase\PreMonitor.xml", 'w', encoding='utf-8')
                monitorin.write(maininput)
                monitorin.close()
                time.sleep(2)
                chat()
 
    status = True
 
    while status == True:
 
        filesize = os.path.getsize(r"C:\Users\User\Desktop\chat\#DataBase\PostMonitor.xml") # Тут происходит присваивание к filesize размер файла.
 
        if __name__ =='__main__':
 
            if filesize == 0:
                it = Input().start()
 
            if filesize > 0:
                with open(r"C:\Users\User\Desktop\chat\#DataBase\PostMonitor.xml", encoding='utf-8') as file:
                    displayport = file.readline()
 
                    f1fa = open(r"C:\Users\User\Desktop\chat\#DataBase\PostMonitor.xml", 'w', encoding='utf-8')
                    f1fa.close() 
 
                    print(displayport)
                chat()
1 программа записывает в файл, 2 программа проверяет размер файла, и выводит значения, удалив их из файла.

Заранее, спасибо. Ценю ваше терпение, и буду очень благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2020, 16:33
Ответы с готовыми решениями:

Как сделать, чтобы при введении текста в input и нажатии enter placeholder input стал первоначальным
&lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt;Document&lt;/title&gt; &lt;link rel=&quot;stylesheet&quot;...

Как сделать чтобы placeholder у input не пропадал?
Есть input для ввода мобильного телефона, поставил &quot;placeholder +38(0__)__-__-___ &quot; и нужно что бы при нажатии placeholder не пропадал, а...

Как сделать, чтобы input не заполнялся, если он не пустой
Подскажите пожалста, как модернизировать скрипт. Надо сделать, чтобы скрипт не заполнял input, если input НЕ пустой. &lt;span...

3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
23.11.2020, 16:45
Цитата Сообщение от NikitaLav Посмотреть сообщение
f1fa = open(r"C:\Users\User\Desktop\chat\#DataB ase\PostMonitor.xml", 'w', encoding='utf-8')
    f1fa.close()
ну и зачем открывал?никак не использовал

Ты из вложенной функции вызываешь внешнюю! караул! Настоятельно советую немного основы подтянуть. Прям как в школе взять книгу и от корки до корки.
1
2 / 1 / 1
Регистрация: 29.01.2020
Сообщений: 41
23.11.2020, 21:28  [ТС]
Welemir1, а почему он выполняет print() несколько раз?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
24.11.2020, 05:50
NikitaLav, потому что тут такого нагорожено, что черт ногу сломит. Я в этом разбираться не хочу. У тебя даже блок мейн внутри цикла внутри функции, а должен быть отдельно.

То есть ты даже примеров не посмотрел как пишут потоки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2020, 05:50
Помогаю со студенческими работами здесь

Как сделать так, чтобы в input не передавалась буква
Хотел сделать так , чтобы при нажатии на букву t у меня к input добавлялся focus , да он добавляется , но почему-то еще пишется сама буква...

Как сделать, чтобы value не отражалось как название кнопки input ?
Добрый день! Кнопка в форме &lt;input type=&quot;submit&quot; name=&quot;forward&quot; value=&quot;forward&quot;&gt; На этой кнопке соответственно название...

Как Input сделать до конца блока,и чтобы при адаптиве он уменьшался
Как Input сделать до конца блока,и чтобы при адаптиве он уменьшался Получается слева у меня лого,справа через несколько пикселей на...

Как сделать чтобы при нажатии кнопка <input> открывалась в новой вкладке?
Здравствуйте! Как сделать чтобы при нажатии кнопка &lt;input&gt; открывалась в новой вкладке? Наткнулся на статью, где решение было вот это:...

INPUT text как сделать чтобы вводимый текст не налазил на картинку backgraund?
Есть поле поиска. Справа в поле размещена картинка - лупа. Как сделать так чтобы вводимый текст не налазил на картинку? Вот CSS: ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru