0

シンプルな pexpect スクリプトには次のようなものがあります。

import pexpect
import sys

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

ただし、スクリプトが呼び出されたシェルでは、出力は表示されません。代わりに、ハングしているように見えますが、プロセス ftp ... が生成されていることがわかりました。

スクリプトが呼び出されたシェルに出力を表示するにはどうすればよいですか?

ありがとう

4

3 に答える 3

1

この行が必要です:

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

してはいけない:

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

通常、必要に応じftpて、を使用する必要があるためftp.something.comです。

于 2013-03-08T09:04:15.533 に答える
0

test.logfile にはコマンドの出力のみが含まれ、コマンド ライン自体は logfile 属性に記録されません。

したがって、コマンドが生成され、出力がない限り、スクリプトを呼び出したときにシェルに何も表示されません。たとえば、ftp 接続のタイムアウトに達したときに表示されます。

于 2013-03-08T14:19:27.407 に答える
0

を使用する必要がある場合がありますlogfile_read。コードは次のとおりです。

import pexpect
import sys
test = pexpect.spawn('ftp www.today.com')
test.logfile_read = sys.stdout
test.expect('Name.*')
于 2015-07-02T06:43:33.490 に答える