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

Работа с командной строкой

15.05.2022, 22:51. Показов 1253. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую форумчане!
не могу понять почему не работает следующий код

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from subprocess import Popen, PIPE
process = Popen(['cmd.exe'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
 
process.stdin.write(b'Set /a d=2\n')
# process.stdin.flush()
# process.stdin.wait(1)
print(process.stdout.readline())
 
process.stdin.write(b'Set /a s=2\n')
# process.stdin.flush()
# process.stdin.wait(1)
print(process.stdout.readline())
 
process.stdin.write(b'Set /a result=d+s\n')
# process.stdin.flush()
# process.stdin.wait(1)
print(process.stdout.readline())
 
process.close()
в чем же ошибка ?

Добавлено через 1 минуту
Python 3.9 Windows 10 x64
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2022, 22:51
Ответы с готовыми решениями:

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

Pyinstaller - пакет exe запускается вместе с командной строкой
Добрый день. Написал программу на Pythonю Скомпилировал файл exe средствами pyinstaller. Все отлично работает, но программа...

Работа с командной строкой
Здравствуйте! Не подскажите как можно работать с командной строкой в си++? Я имею ввиду через компилятор передавать команды в командную...

9
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
16.05.2022, 02:44
Цитата Сообщение от artmartkart Посмотреть сообщение
в чем же ошибка ?
действительно, в чем же?.. и где она?
0
0 / 0 / 0
Регистрация: 15.05.2022
Сообщений: 43
16.05.2022, 11:38  [ТС]
Jabbson, хорошая шутка я оценил

не работает и следующее
Python
1
2
3
4
5
async def main1sd():
    process = Popen(['cmd.exe'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
    process.stdin.write(b'Set /a d=2\n')
    print (await process.stdout.read()
    process.
почему просто нельзя придумать метод чтения результата ?
на форумах городят огородные огороды...

в рамках этого же модуля работает отлично метод communicate:
Python
1
 stdout= process.communicate("Set /a b=1\n".encode("utf-8"))[0]
только он закрыает процесс и читает все подряд.


из огорода работает -
https://docs.python.org/3/libr... get_nowait
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
16.05.2022, 18:44
Цитата Сообщение от artmartkart Посмотреть сообщение
Jabbson, хорошая шутка я оценил
Шуток там не было, не делайте из меня комика, пожалуйста.

Винды у меня нет, но попробовал на маке...

Python
1
2
3
4
5
6
7
8
9
from subprocess import Popen, PIPE
p = Popen(['/bin/zsh'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
cmds = [b'x=75', b'y=22', b'expr $x + $y']
 
for c in cmds:
    p.stdin.write(c + b"\n")
 
p.stdin.close()
print(p.stdout.read().decode())
Code
1
2
 ~ python3.10 test.py
97
что выглядит как что-то, отдаленно похоже на то, что Вы пытаетесь сделать, но так как задачи в вопросе не было, то я могу только гадать. Если вместо того, "что не работает", Вы расскажите что Вы хотите добиться, то у кого-то могут появиться еще идеи.
0
0 / 0 / 0
Регистрация: 15.05.2022
Сообщений: 43
16.05.2022, 21:07  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
Вы расскажите что Вы хотите добиться, то у кого-то могут появиться еще идеи.
сори за не полную постановку задачи.

в общем необходимо выполнять цепочку команд в cmd и получать результаты.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
process.stdin.write("команда 1")
# результат команды 1(не все подряд нужно а именно результат)
print(process.stdout.readline())
 
# спустя время продолжить
process.stdin.write("команда 2")
# результат команды 2(не все подряд нужно а именно результат)
print(process.stdout.readline())
 
# спустя время продолжить
process.stdin.write("команда 3")
# результат команды 3(не все подряд нужно а именно результат)
print(process.stdout.readline())
 
# и так далее
вот этого нужно избежать. ибо открыть его не получится
Python
1
p.stdin.close()
если его не закрыть то он блокирует доступ к stdout.
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
17.05.2022, 10:59
artmartkart, а зачем вообще все это нужно, почему консоль должна быть открыта, почему нельзя просто вызывать команды друг за другом и получать код завершения?
0
p
 Аватар для hasker2
84 / 44 / 16
Регистрация: 15.01.2021
Сообщений: 433
17.05.2022, 17:25
artmartkart, использую
Python
1
2
3
import os
os.system('твоя команда')
input()
если я правильно понял тебя
0
0 / 0 / 0
Регистрация: 15.05.2022
Сообщений: 43
22.06.2022, 20:09  [ТС]
Цитата Сообщение от Fudthhh Посмотреть сообщение
а зачем вообще все это нужно
Дело в том что процесс который меня интересует работает под управлением командной строки - закрыть ее значит закрыть сессию процесса.

и если запустить заново командную строку и обратится к процессу - не сработает

также не работает WinApi:SendMessage

выход как и писал выше - асинхронно читать результаты - в моем случае замучаешься разбирать и пока отложил это дело в "ящик".

hasker2, немножко не то что нужно.
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
23.06.2022, 07:26
artmartkart, а почему бы не создать батник?
0
0 / 0 / 0
Регистрация: 15.05.2022
Сообщений: 43
23.06.2022, 20:05  [ТС]
Fudthhh,

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

Работа с командной строкой
Доброго времени суток! Вопрос одновременно глупый, и не очень. Суть такова - хочу из своей программы по нажатию кнопки открыть...

Работа с командной строкой
Ситуация: у меня есть программа-интерпретатор другого языка. Работает через командную строку. Преподаватель попросил следующее: реализовать...

Работа с командной строкой
Собственно, необходимо считать данные из командной строки, убрать все буквы и выдать результат. .286 .model small .stack 256h .data...

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

Работа с командной строкой
Я написал код, который ставит определённую программу на автозапуск. Есть определённая последовательность команд, которая записывает...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru