Найти - Пользователи
Полная версия: Python + cmd
Начало » Python для новичков » Python + cmd
1
Vic45rus
Общаюсь в питоне с командной строкой в одностороннем порядке
Суть в том, что есть некоторый цикл, в котором содержится следующий код:
            os.system('команда')
Однако у такого способа есть недостатки
Т.к. находится эта часть кода в цикле, то каждый раз при выполнении цикла запускается новая командная строка, всё бы ничего, однако каждый раз при запуске командной строки основное приложение делается неактивным и сворачивается, а выполнение Python скрипта приостанавливается до тех пор, пока не закроется командная строка.
Уважаемые знатоки, теперь вопросы:
1.Как сделать, чтобы командная строка не сворачивала основное приложение, а питон не дожидался её завершения?
2.Как сделать, чтобы запускалась только одна командная строка в фоне, а ей уже каждый цикл посылались команды?
Заранее спасибо за любую помощь!
py.user.next
Попробуй subprocess.Popen() .
Vic45rus
Ругается аж на две строки
Lib/subprocess.py", line 679, in __init__
Lib/subprocess.py", line 896, in _execute_child
Есть ещё варианты?
py.user.next
Vic45rus
Есть ещё варианты?
Сначала прочитай, как там программы запускать.
doza_and
Vic45rus
Python скрипта приостанавливается до тех пор, пока не закроется командная строка
1 То что вы хотите сделать называется асинхронное выполнение. Если программа которую вы запускаете не предназначена для этого, то все равно не очень хорошо получится.

Чтобы посылать данные непрерывно вам надо запихивать ей команды во входной поток. Но не существует общепринятого способа объяснить что кончилась одна команда и началась другая. Поэтому до вашей программы данные дойдут одним куском, когда вы напихаете несколько килобайт команд.
И выглядеть это будет так, что программа начала выполняться только когда вы закроете ее stdin (при этом буфер опустошится наконец ей на вход).
Тогда уж лучше использовать communicate
https://docs.python.org/2/library/subprocess.html

2
Vic45rus
Есть ещё варианты?
Других вариантов нет. Если вы subprocess не сможете использовать, то вам вообще не стоит заниматься программированием на питоне.
Vic45rus
Вроде всё правильно написал, а выполняться она не хочет. Ошибок тоже не выдаёт. Окошка cmd нет.
cmd = """shutdown /s /t 0"""
proc = Popen(
    cmd,
    shell=True
)
Что я сделал не так?
doza_and
не стоит заниматься программированием на питоне.
С os.system всё несколько проще, а вот нормальное описание некоторых модулей для python в google на русском и днём с огнём не сыщешь
sander
Vic45rus
Vic45rus
а вот нормальное описание некоторых модулей для python в google на русском и днём с огнём не сыщешь
а вот это вранье
Vic45rus
sander
Может не будете флудить, а предложите что-нибудь полезное?
Например ссылку на полное и понятное для новичка описание на русском того, как работает subprocess?
А то создаётся впечатление, что опытные носители языка явно недружелюбны к новичкам.
4kpt_III
Просто новички делают громогласные заявления, которые несовместимы с их статусом Поэтому и такая реакция.

Для примера. Вот блог мной очень уважаемого человека.
Переходим и читаем
py.user.next
Vic45rus
а вот нормальное описание некоторых модулей для python в google на русском и днём с огнём не сыщешь
import subprocess
help(subprocess)
Там примеры.

Читай основную документацию.

Vic45rus
С os.system всё несколько проще
os.system() не даёт прочитать/проанализировать вывод, просто в консоль выводит.

Vic45rus
Окошка cmd нет.
Оно не всегда бывает, фоновый процесс на то и фоновый.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB