Уведомления

Группа в Telegram: @pythonsu

#1 Май 31, 2017 02:32:54

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск внешнего приложения

Всем привет.
Есть внешнее приложение, задача написать такой скрипт. Запустить приложение, передать в него
пароль и логин и дальше запустить его.
С первой частью а имменно запуск мне понятен (Использутся модуль os и функция os.system('path')) а вот
как дальше реализовать я не знаю.

Офлайн

#2 Май 31, 2017 15:45:31

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Запуск внешнего приложения

дальше вам никак, потому что вы не имеете никакого контроля за дочерним процессом
используйте subprocess
И да этот вопрос оч легко гуглится



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Июнь 1, 2017 01:48:28

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск внешнего приложения

Я пытался гуглить, но не смог найти ответа на мой вопрос. Буду благодарен за ссылку с описанием.
Т.е. изачально было не правильно выбран модуль os?

Офлайн

#4 Июнь 1, 2017 09:45:24

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Запуск внешнего приложения

както так, на примере cat :

 import subprocess
 
p = subprocess.Popen(['cat'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
 
for i in range(3):
    p.stdin.write('msg {}\n'.format(i))
    info = p.stdout.readline()
    print(info)
или так:
 import subprocess
proc = subprocess.Popen(['sftp','user@server', 'stop'], stdin=subprocess.PIPE)
proc.stdin.write('yourPassword\n')
proc.stdin.flush()
“ссылка с описанием”: https://docs.python.org/3/library/subprocess.html
на русском: https://pythonworld.ru/moduli/modul-subprocess.html
http://john16blog.blogspot.com/2010/10/python-subprocess.html



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 1, 2017 09:55:44)

Офлайн

#5 Июнь 5, 2017 03:22:02

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск внешнего приложения

Спасибо
Пытался повторить первый пример и у меня появляется такая ошибка
Traceback (most recent call last):
File “<stdin>”, line 2, in <module>
TypeError: a bytes-like object is required, not ‘str’

Отредактировано roggerg (Июнь 5, 2017 03:53:14)

Офлайн

#6 Июнь 5, 2017 12:24:45

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Запуск внешнего приложения

roggerg
TypeError: a bytes-like object is required, not ‘str’
TypeError: необходим байтовый объект, а не ‘str’
намекну
 >>> type('qwe')
<class 'str'>
>>> type(b'qwe')
<class 'bytes'>
>>> type(bytes('qwe', 'utf-8'))
<class 'bytes'>
>>> bytes('qwe', 'utf-8') == b'qwe'
True



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version