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

Передачи строки параметров объекту subropcess и проблемы её парсинга

18.07.2020, 09:45. Показов 1433. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Мне нужно запустить последовательность строк команд в cmd. В этой последовательности есть команды, относящие к командам cmd, а есть и те команды, которые относятся к запускаемому .exe.


Python
1
2
3
4
5
import subprocess
 
seq = "A: && cd A:\\folder && ASC2BIN.EXE && nircmd.exe sendkeypress enter enter enter && file.ascii && file.bin"
 
p = subprocess.Popen([seq], shell=True, stdin=subprocess.PIPE,stdout=subprocess.PIPE)

ASC2BIN.EXE требует трёхкратного нажатия клавиши ENTER перед тем как в интерактивном режиме следует последовательно ввести 2 параметра --- названия файлов (если они лежат в том же каталоге, что и ASC2BIN.EXE) или полные пути до них.

Последовательность , записанная в переменную seq работает до запуска ASC2BIN.EXE, а трехкратное нажатие кл. ENTER не происходит. nircmd.exe лежит там же где и ASC2BIN.EXE --- по пути A:\\folder

Как нужно переписать строку seq, что сработал nircmd.exe после запуска ASC2BIN.EXE?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.07.2020, 09:45
Ответы с готовыми решениями:

Проблемы безопасности при передачи параметров формы
Вот проблема возникла - адрес URL на сайте: http://www.mysite.ru/file.asp?id=16 Соответственно в файле file.asp содержится что-то из...

Проблемы парсинга (часть кода пропадает)
Всем доброго времени суток! есть сайт https://fonbet.betgamestv.eu/ext/game/odds/fonbet/4/0/decimal (НЕ РЕКЛАМА!!!!) раньше без проблем...

Передача объектов в качестве параметров другому объекту
Добрый день, подскажите как правильно передать объекты в качестве параметров другому объекту чтобы при этом еще и соблюсти инкапсуляцию ...

6
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.07.2020, 16:27
Лучший ответ Сообщение было отмечено Alex_py как решение

Решение

Python
1
2
3
4
5
6
7
import os
 
os.chdir(r'A:\folder')
assert os.getcwd() == r'A:\folder'
p = subprocess.Popen(['ASC2BIN.EXE'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
grep_stdout = p.communicate(input=b'\n\n\n')[0]
print(grep_stdout.decode())

Разве не проще запустить ASC2BIN.EXE с нужными аргументами?
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
18.07.2020, 18:26  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Разве не проще запустить ASC2BIN.EXE с нужными аргументами?
Да я не знал.

Вообще, Вы хорошо мне помогли. Параметры, если следует передавать в строковом формате, то можно поставить флаг text=True:

Python
1
2
3
4
5
6
7
import os
 
os.chdir(r'A:\folder')
assert os.getcwd() == r'A:\folder'
p = subprocess.Popen(['ASC2BIN.EXE'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, text = True)
param1, param2 = 'hex.ascii', 'file.bin'
p.communicate(input='\n\n\n' + param1 + '\n' + param2)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.07.2020, 18:36
Цитата Сообщение от Alex_py Посмотреть сообщение
Да я не знал.
Если можно, то код сократится так:
Python
1
2
os.chdir(r'A:\folder')
p = subprocess.Popen(['ASC2BIN.EXE', 'hex.ascii', 'file.bin'])
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
18.07.2020, 19:31  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Если можно, то код сократится так:

Да, дело в том, что так exe запрограммирован, что сначала нужно пролистать его справку 3-х кратным нажатием ENTER, потом только будет приглашение ввести первый параметр param1, потом приглашение ввести параметр param2. А иначе-то, да, можно было бы сократить код. Спасибо ещё раз Вам, прямо спасли =)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.07.2020, 19:47
Я немного не про то. Откройте консоль и введите:
Bash
1
2
cd A:\folder
ASC2BIN.EXE hex.ascii file.bin
Должно отработать без входа интерактивный режим. Или попробовать вывести справку по ключам:
Bash
1
2
3
4
ASC2BIN.EXE /?
ASC2BIN.EXE -h
ASC2BIN.EXE --help
ASC2BIN.EXE -help
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
18.07.2020, 21:39  [ТС]
Я когда запускаю этот exe сразу вылезают строки справки по поводу того, что это за exe и какой файл нужен подготовить для первого ввода. Как только запускаешь exe, последняя строка говорит нажать ENTER или ввести команду DOS. Далее, после нажатия ENTER, снова идут новые строки справки и приглашение нажать ENTER, после которого снова тоже самое и потом следуют 2 приглашения ввести входной файл (пример --- hex.ascii) и имя выходного файла (пример --- file.bin). Так, всего нужно нажать ENTER 3 раза, чтобы дойти до последовательного ввода параметров.


Эти команды не работают:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Bash
1
2
3
4
ASC2BIN.EXE /?
ASC2BIN.EXE -h
ASC2BIN.EXE --help
ASC2BIN.EXE -help
Видимо его запрограммировали без вызова справки через параметр -h. Сам exe официальный, но был создан в 1997 году, насколько я помню.

Тоже пробовал --- идут первые строки справки и приглашает нажать ENTER:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Bash
1
2
cd A:\folder
ASC2BIN.EXE hex.ascii file.bin
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2020, 21:39
Помогаю со студенческими работами здесь

Как присвоить несколько параметров одному объекту?
Возможно ли реализовать следующее: в базе данных у меня есть пациент, у которого есть основной диагноз и сопутствующий. Основной - один,...

передачи параметров в функции
Ребята, помогите пожалуйста с заданием( завтра сдавать курсач а я не шарю в Си++ заранее благодарна вам ...

Механизмы передачи параметров
Составить алгоритм и программу, реализующую разные механизмы передачи параметров, на примере нахождения значений функций: 1) Функция...

Программа передачи параметров
НАПИСАНИЕ ПРОГРАММЫ ПЕРЕДАЧИ ПАРАМЕТРОВ С ПОМОЩЬЮ параметров командной строки

Оригинальный метод передачи параметров
Функция-фабрика создаёт временный объект, operator<< набивает его данными, после чего строка заканчивается. Вызывается деструктор...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru