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

Задержка окна консоли после выполнения кода

05.10.2014, 17:11. Показов 48274. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код, который использует модули os, subprocess, вызывает cmd и пытается авторизоваться в сетевой папке с помощью системных команд винды.
Насколько правильно все сделано - я еще не проверял, но питон скрипт завершает без ошибок.
Я этот код скомпилировал в exe.
Как заставить эту упертую как осел консоль задержаться хотя бы на 3 секунды, чтобы успеть прочитать все что выпало в результате выполнения???
Перепробовал всякие варианты. Подгружал модуль time, пробовал input(), пробовал os.system("pause") - ничего не получается.
Хотя, есть другой скрипт скомпилированный в exe...так вот в нем все с помощью input() решается.
Может дело в коде???

Во вложении код скрипта на питоне, папка с файлами скомпилированной программы, код скрипта (setup), с помощью которого компилировал код в exe

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
"""Синтаксис команды CMD: net use [driveletter:] \\ComputerName\ShareName[\volume] [password | *]
              [/USER:[domainname\]username] [/PERSISTENT:{YES | NO}]
"""
# -*- coding: utf-8 -*-
# Программа запрашивает у пользователя данные для подключения к сетевой папке и авторизуется на сервере
# при помощи модуля subprocess, который позволяет подключать в Python внешние программы для выполнения каких-либо
# команд
#
# Сначала попросим пользователя ввести данные о сервере, сетевой папке, пароле и логине пользователя:
#
import re
CN = "\\" + "\\" + input("Input name of server or it's IP adress: ") #Вводим имя или IP сервера, сохраняем его в строковом формате в переменной CN
SN = "\\" + input("Input folder name: ") #Вводим имя сетевой дирректории, сохраняем в строковом формате в переменной SN
Pass = " " + input("Input Pass: ") #Вводим пароль для входа, сохраняем в строковом формате в переменной Pass
User = " /user:" + input("Input UserName: ") #Вводим имя пользователя, сохраняем в строковом формате в переменной User
#
# После того, как все данные введены, подготовим все необходимое для выполнения команды авторизации
#
import os
Log = os.path.expanduser('~') + r"\log.txt" # Задаем переменной Log строковое значение пути к файлу лога для дальнейшей подстановки в команду. В файле лога будет
# отображаться результат выполнения команды
Redict = r" >> " # Записываем в переменную Redict спецсимвол перенаправления записи результата команды в файл - сделано для удобства
Command = "net use " + CN + SN + Pass + User + Redict + Log #Записываем системную команду Net use в переменную Command для удобного вызова в будущем,
# соединяя строки, записанные в переменных
Test = "echo test ok" + Redict + Log #Заиписываем в пееменную Test команду тестирования программы с записью результата в файл лога
print ("Inputed command = ", Command) #Выводим подготовленную системную команду на экран для наглядности
import subprocess #Загружаем модуль Subprocess, описанный в начале программы
p_1 = subprocess.Popen(Test, shell=True, stdout=subprocess.PIPE)#Сообщаем Windows команду из переменной Test с помощью подпроцесса, описанного в переменной P_1
p_1.wait()#Блокируем клавиатуру до выполнения подпроцесса переменной p_1
if p_1.poll() == 0:#Проверяем результат выполнения подпроцесса переменной p_1
    print("Test OK, process ending code is ", p_1.poll())#Если код завершения команды равен 0, значит она отработала удачно, сообщаем пользователю об этом
else:
    print("Test failed !!! , process ending code is ", p_1.poll())#Если код завершения программы не равен 0, значит, произошла ошибка, сообщаем пользователю об этом
p_2 = subprocess.Popen(Command, shell=True, stdout=subprocess.PIPE)#Сообщаем Windows команду из переменной Command с помощью подпроцесса, описанного в переменной p_2
p_2.wait()#Блокируем клавиатуру до выполнения подпроцесса переменной p_2
if p_2.poll() == 0:#Проверяем результат выполнения подпроцесса переменной p_2
    print("Main programm OK, process ending code is ", p_2.poll())#Если код завершения команды равен 0, значит она отработала удачно, сообщаем пользователю об этом
else:
    print("Main programm failed !!!, process ending code is ", p_2.poll())#Если код завершения команды не равен 0, значит, произошла ошибка, сообщаем об этом пользователю
Res = open(Log, 'r')#Открываем фай лога на чтение
print("Log file contents:\n", Res.read())#Выводим на экран все строки файла
Res.close()
from os import remove
remove(Log)
from os import system
system("pause")
Вложения
Тип файла: rar problem.rar (1.50 Мб, 8 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2014, 17:11
Ответы с готовыми решениями:

Результат выполнения программы в консоли пропадает после выполнения скрипта
нужно отпарсить файл , но мне надо видеть что выводит сценарий , иначе мне его неотладить. Запускаю файл вот так python index.py

Задержать закрытие окна консоли после выполнения программы
Какой командой задержать экран C++ после выполнения программы, а то он сразу исчезает.

Задержка выполнения кода на время выполнения анимации
Пишу игру с видом пошагового боя. С каждым ходом, игрок выкладывает на доску новую фигуру. После того, как игрок выложил фигуру –...

14
8 / 8 / 0
Регистрация: 02.10.2014
Сообщений: 31
05.10.2014, 22:46
win+r -> cmd -> cd dir/with/script -> scrypt.exe
0
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 4
06.10.2014, 19:44  [ТС]
Вставил команду в код питона, в строку №34 - добавил указанную выше команду в качестве аргумента subprocess.Popen, результат не изменился.

Если я правильно понял ex3me0 посоветовал, чтобы командная оболочка работала в той же папке, что и скрипт, но это не помогает.
0
8 / 8 / 0
Регистрация: 02.10.2014
Сообщений: 31
06.10.2014, 19:53
elfimovsy, нет, я предложил запускать ваш exe-шник не кликом мыши в проводнике, а через консоль
в таком случае вы увидите вывод Вашей программы
0
1 / 1 / 1
Регистрация: 24.11.2013
Сообщений: 59
13.10.2014, 19:57
как вариант вставте в конце скрипта функцию ввода.
Python
1
input()
0
8 / 8 / 0
Регистрация: 02.10.2014
Сообщений: 31
13.10.2014, 20:09
Punk_Joker, пробовали уже
в первом посте:
пробовал input(),
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
13.10.2014, 20:31
у самого была аналогичная проблема. Проблему решил, но увы решения не осталось. Возможно помогло использование raw_input() во втором питоне, и еще как вариант - попробуй другую программу для преобразования в exe.
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
13.10.2014, 22:07
Bash
1
nu.py  >out.txt
0
45 / 39 / 24
Регистрация: 29.11.2013
Сообщений: 145
13.10.2014, 22:20
Наверно решение от ex3me0 самое правильное. Но предложу такой вариант с input()

Python
1
2
3
4
5
6
7
8
9
10
11
...
print("Log file contents:\n", Res.read())#Выводим на экран все строки файла
Res.close()
 
end_read_out = ''
while end_read_out != '.': # Вводим точку для продолжения
    end_read_out = input()
 
from os import remove
remove(Log)
...
0
1 / 1 / 0
Регистрация: 05.08.2016
Сообщений: 1
05.08.2016, 10:46
Пример того когда комментарии к коду скорее вредны чем полезны

print('Hello Ворлд') '''Здесь мы используем встроенную функцию для вывода сообщения на экран. Сообщение заключено в одинарные кавычки и состоит из двух слов. Нужно написать еще что-то потому что я люблю писать бесполезные комментарии'''

Добавлено через 12 минут
Юному программеру на заметку (на любом языке):

1. Комментарии должны быть лаконичны и обезличены (без "мы, нас, ему, нам" и т.п.);
2. Если нужно добавить блок с описанием какого то внешнего инструмента - то добавлять его нужно в конец листинга;
3. Комменты пишутся или ДО блока с кодом или ПОСЛЕ. Писать комменты справа (особенно длинные) - плохая привычка;
4. Переменные должны называться ОСМЫСЛЕННО и ПОНЯТНО, а не CN и SN,
например: server_name, net_folder, user_name, user_pass и т.п.

Всё это ОБЯЗАТЕЛЬНО нужно соблюдать чтобы следовать давно сформированным
правилам оформления кода. Вам самим будет его легче читать и другим кто будет с ним работать.
По тому как оформлен код можно сделать вывод о том как разработчик относится к работе в целом

И само собой не должно быть никаких ошибок и всяких жаргонных словечек типо "винда, тут мы кодим, консолька, юзверь и т.п.". Термины должны быть строго технические и общепринятые.


---
Если не требуется обработка нажатия клавиш, то самое простое решение:

Python
1
2
3
4
import time
delay = 5            #время задержки в секундах;
# какой-то код;
time.sleep(delay)
Использовать input() - плохое решение, т.к. оно подразумевает что пользователь нажмет Enter.
Но если он нажмет что-то другое, то это что-то другое будет выводится на экран.
1
Эксперт Python
 Аватар для dondublon
4648 / 2068 / 366
Регистрация: 17.03.2012
Сообщений: 10,168
Записей в блоге: 6
05.08.2016, 14:49
Если input в конце не работает - возможно, до конца скрипта просто происходит ошибка.
Чтобы посмотреть вывод, можно сделать вывод в файл:
Code
1
myscript.exe > out.txt
Добавлено через 1 минуту
А, ещё вариант - запускать через FAR ^)
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
06.08.2016, 00:30
Раскопали обсуждение 2014 года, молодцы
0
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 6
16.08.2016, 12:48
Использовать input() - плохое решение, т.к. оно подразумевает что пользователь нажмет Enter.
Но если он нажмет что-то другое, то это что-то другое будет выводится на экран.
Вот, кстати, да. А есть ли на питоне какой-нибудь аналог ReadKey() или getch(), чтобы просто ждал нажатия любой клавиши без enter? Конечно же есть msvcrt и readchar, но ставить доп. модуль только ради нажатия клавиши, как-то не очень красиво. Если только для себя, то ладно, ну а если кому-то другому срипт пишешь?
0
Эксперт Python
 Аватар для dondublon
4648 / 2068 / 366
Регистрация: 17.03.2012
Сообщений: 10,168
Записей в блоге: 6
16.08.2016, 14:28
Sidorov, нету. Тут уже где-то это обсуждалось. Этим занимается не питон, а программа-терминал. cmd.exe или что-то аналогичное.
0
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 6
16.08.2016, 17:58
dondublon, Кстати, не всегда, но довольно часто бывает, что и far запускает скрипт в отдельном окне, если панели скрыть (по Ctrl-O), то только тогда гарантированно в самом far'е отработает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2016, 17:58
Помогаю со студенческими работами здесь

Задержка выполнения кода
Всем привет! Обучаюсь понемногу С# и пишу программу для управления устройством по COM-порту. Необходимо устройству подавать...

Задержка выполнения кода в скрипте
как между setActive false и true сделать задержку в 1 секунду? using UnityEngine; using UnityEngine.UI; using System.Collections; ...

Задержка выполнения кода в Unity
Подскажите пожалуйста, каким образом можно реализовать задержку выполнения кода. У меня есть скрипт, который перемещает объект постоянно...

Задержка выполнения кода скрипта
Как сделать что бы сообщение отправлялось через определенное время. Например через минуту-две после того как пользователь нажмет кнопку...

Задержка выполнения кода на несколько секунд
Здравствуйте. Как прервать выполнение кода на некоторое количество секунд? Ну например, вводит пользователь а и в, жмет кнопку, а...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru