Форум сайта python.su
0
Всем привет.
Есть внешнее приложение, задача написать такой скрипт. Запустить приложение, передать в него
пароль и логин и дальше запустить его.
С первой частью а имменно запуск мне понятен (Использутся модуль os и функция os.system('path')) а вот
как дальше реализовать я не знаю.
Офлайн
221
дальше вам никак, потому что вы не имеете никакого контроля за дочерним процессом
используйте subprocess
И да этот вопрос оч легко гуглится
Офлайн
0
Я пытался гуглить, но не смог найти ответа на мой вопрос. Буду благодарен за ссылку с описанием.
Т.е. изачально было не правильно выбран модуль os?
Офлайн
294
както так, на примере 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()
[code python][/code]
Отредактировано PEHDOM (Июнь 1, 2017 09:55:44)
Офлайн
0
Спасибо
Пытался повторить первый пример и у меня появляется такая ошибка
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)
Офлайн
221
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
Офлайн