2013-03-08 4 views
0

Нашего простого pexpect скрипта имеет это:выхода pexpect не показывая

import pexpect 
import sys 

test = pexpect.spawn('ftp www.today.com') 
test.logfile = sys.stdout 
test.expect('Name.*') 

Однако на оболочке сценарий был вызван, нет вывода показан на рисунке. Вместо этого, похоже, висит, но мы видим, что процесс ftp ... порожден.

Как получить вывод, отображаемый на оболочке, сценарий вызывается?

благодаря

ответ

1

Если эта линия:

test = pexpect.spawn('ftp www.today.com') 

не будет:

test = pexpect.spawn('ftp ftp.today.com') 

, потому что, как правило, если вы хотите ftp, вы должны будете использовать ftp.something.com.

+0

Этот ответ не имеет отношения к вопросу. FTP-серверы могут работать на любом имени хоста, а не только на тех, которые начинаются с букв ftp –

+0

@ DanielLawson: 'ftp' vs.' www' является основной проблемой здесь. 'ftp www.today.com' приводит к таймауту, а' ftp ftp.today.com' показывает 'ftp>' приглашение. – jfs

0

test.logfile будет содержать только вывод команды, сама командная строка не регистрируется в атрибуте logfile.

До тех пор, пока команда порождена и что нет выхода, при вызове вашего скрипта в оболочке ничего не будет отображаться. Будет отображаться, когда, например, достигнут тайм-аут соединения ftp.

+0

['test.logfile' содержит ** оба ** вход и выход] (https://pexpect.readthedocs.org/en/latest/api/pexpect.html#spawn-class) – jfs

0

Возможно, вам потребуется использовать logfile_read. Вот код:

import pexpect 
import sys 
test = pexpect.spawn('ftp www.today.com') 
test.logfile_read = sys.stdout 
test.expect('Name.*') 
+0

' .logfile_read' показывает ** less ** output (он не включает '_send'), чем' .logfile', показанный в вопросе – jfs

+0

. Из вопроса кажется, что выход был необходим, чтобы узнать, вызвана ли программа, а затем где она застряла. Таким образом, в этом случае '_read' будет help.I пробовал' .logfile', но не видел никакого вывода, как упоминалось в вопросе о том, что скрипт застрял – SKT

+0

['test.logfile' содержит ** оба ** вход и выход] (https://pexpect.readthedocs.org/en/latest/api/pexpect.html#spawn-class). Если вы ничего не видите с '.logfile'; вы ничего не увидите с '.logfile_read' – jfs

Смежные вопросы