Pexpect 라이브러리의 간단한 학습
5947 단어 python 홈 라이브러리
Pexpect 라이브러리의 간단한 학습
1. 간단한 소개 및 설치
pexpect의 실행 절차는 사실 3단계입니다. - 우선spawn으로 프로그램을 실행합니다. - expect로 지정한 키워드를 기다립니다. 이 키워드는 실행된 프로그램이 표준 출력에 출력된 것입니다. 즉, 컴퓨터가 당신에게 물어볼 것입니다. - 어떤 키워드를 발견하면 어떤 작업에 들어가고,작업이 끝난 후 순환을 종료하거나 다음 expect로 이동합니다.
간단한 예를 들어 ftp의 연결 (코드 출처).
# -*- coding:utf-8 -*-
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
import pexpect
import sys
# spawn
child = pexpect.spawn('ftp ftp.openbsd.org')
# expect ’name‘
child.expect('(?i)name .*: ')
# , name
child.sendline('anonymous')
# expect ’password‘
child.expect('(?i)password')
# , password
child.sendline('[email protected]')
# expect ’ftp>‘
child.expect('ftp> ')
# , ftp ,
child.sendline('cd /pub/OpenBSD/3.7/packages/i386')
child.expect('ftp> ')
child.sendline('bin')
child.expect('ftp> ')
child.sendline('prompt')
child.expect('ftp> ')
child.sendline('pwd')
child.expect('ftp> ')
print("Escape character is '^]'.
")
sys.stdout.write (child.after)
sys.stdout.flush()
child.interact() # Escape character defaults to ^]
# At this point this script blocks until the user presses the escape character
# or until the child exits. The human user and the child should be talking
# to each other now.
# At this point the script is running again.
print('Left interactve mode.')
# The rest is not strictly necessary. This just demonstrates a few functions.
# This makes sure the child is dead; although it would be killed when Python exits.
if child.isalive():
child.sendline('bye') # Try to ask ftp child to exit.
child.close()
# Print the final state of the child. Normally isalive() should be FALSE.
if child.isalive():
print('Child did not exit gracefully.')
else:
print('Child exited gracefully.')
3. API
1、spawn()
spawn () 은 프로그램의 조작 핸들을 되돌려 주는 프로그램을 실행합니다.
process = pexpect.spawn('ftp sw-ftp')
spawn () 은 두 가지 호출 방식이 있습니다
process = pexpect.spawn('ftp sw-ftp')
cmd = 'ftp sw-ftp'
process = pexpect.spawn('/bin/bash', ["-c", cmd])
두 번째 호출 방식을 사용하는 것을 추천합니다. 코드가 복잡해 보이지만, 명령줄이 실행될 때 특수 문자 '*' 가 나오는 등 몇 가지 일을 피할 수 있습니다.
예를 들어: 현재 디렉터리에서 시작하는 파일 정보를 찾고 싶습니다
process = pexpect.spawn('ls ta*')
실행하면 이 오류가 터질 겁니다.
pexpect.exceptions.EOF: End Of File (EOF). Exception style platform.
cmd = 'ls ta*'
process = pexpect.spawn('/bin/bash', ['-c', cmd])
결과가 정상적으로 집행되다.
spawn은 명령을 전달하는 두 가지 방법 외에도 키워드 인자가 있습니다. 예를 들어 - timeout 시간 초과 - maxread 캐시 설정 - searchwindowsize 모드 일치 한도값 - logfile 로그 파일 - env 지정 환경 변수 - cwd 지정 실행 디렉터리 - 더 많은 것은 spawn () - 실행 프로그램 참조
2、expect()
프로그램 핸들을 가져오면 핸들의expect () 방법을 호출하여 키워드를 찾고 키워드에 따라 다른 동작을 수행할 수 있습니다.
TAT
참조 문서
Pexpect 모듈 사용 설명 탐색 Pexpect, 섹션 1: Pexpect Pexpect version 4.6 분석
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pexpect 라이브러리의 간단한 학습Pexpect 라이브러리의 간단한 학습 셋째, API Pexpect 라이브러리의 간단한 학습 expect는 주로 인간 대화를 모의하는 데 사용되는데 쉽게 말하면 정규 매칭 포착 시스템의 질문(예를 들어 rm 조작의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.