国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對Python Pexpect 模塊的使用說明詳解

2020-02-16 01:07:50
字體:
來源:轉載
供稿:網友

背景介紹

Expect 程序主要用于人機對話的模擬,就是那種系統提問,人來回答 yes/no ,或者賬號登錄輸入用戶名和密碼等等的情況。因為這種情況特別多而且繁瑣,所以很多語言都有各種自己的實現。最初的第一個 Expect 是由 TCL 語言實現的,所以后來的 Expect 都大致參考了最初的用法和流程,整體來說大致的流程包括:

運行程序

程序要求人的判斷和輸入

Expect 通過關鍵字匹配

根據關鍵字向程序發送符合的字符串

TCL 語言實現的 Expect 功能非常強大,我曾經用它實現了防火墻設備的完整測試平臺。也因為它使用方便、范圍廣,幾乎所有腳本語言都實現了各種各樣的類似與Expect的功能,它們叫法雖然不同,但原理都相差不大

pexpect 是 Python 語言的類 Expect 實現。從我的角度來看,它在功能上與 TCL 語言的實現還是有一些差距,比如沒有buffer_full 事件、比如沒有 expect before/after 事件等,但用來做一般的應用還是足夠了。

基本使用流程

pexpect 的使用說來說去,就是圍繞3個關鍵命令做操作:

首先用 spawn 來執行一個程序

然后用 expect 來等待指定的關鍵字,這個關鍵字是被執行的程序打印到標準輸出上面的

最后當發現這個關鍵字以后,根據關鍵字用 send 方法來發送字符串給這個程序

第一步只需要做一次,但在程序中會不停的循環第二、三步來一步一步的完成整個工作。掌握這個概念之后 pexpect 的使用就很容易了。當然 pexpect 不會只有這 3 個方法,實際上還有很多外圍的其他方法,我們一個一個來說明

API

spawn() - 執行程序

spawn() 方法用來執行一個程序,它返回這個程序的操作句柄,以后可以通過操作這個句柄來對這個程序進行操作,比如:

process = pexpect.spawn('ftp sw-tftp')

上面 spawn() 中的字符串就是要執行的程序,這里我們打開一個到 sw-tftp 服務器的 ftp 連接。 spawn() 中的第一個元素就是要執行的命令,除此之外還可以指定一些其他參數,比如: pexpect.spawn('ftp sw-tftp', timeout=60) 就指定了超時時間,這些具體的會在后面講解。

process 就是 spawn() 的程序操作句柄了,之后對這個程序的所有操作都是基于這個句柄的,所以它可以說是最重要的部分。盡量給它起個簡短點的名字,不然后面的程序要多打不少字的。-

注意: spawn() ,或者說 pexpect 并不會轉譯任何特殊字符 比如 | * 字符在Linux的shell中有特殊含義,但是在 pexpect 中不會轉譯它們,如果在 linux 系統中想使用這些符號的正確含義就必須加上 shell 來運行,這是很容易犯的一個錯誤。

正確的方式:

process = pexpect.spawn('/bin/bash –c "ls –l | grep LOG > log_list.txt"')process.expect(pexpect.EOF)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绍兴市| 合山市| 阳信县| 方城县| 东城区| 肇州县| 名山县| 平南县| 辛集市| 小金县| 南陵县| 盘锦市| 洞口县| 万盛区| 城口县| 眉山市| 招远市| 永泰县| 江山市| 海城市| 无极县| 巫山县| 额尔古纳市| 习水县| 伊金霍洛旗| 乌兰浩特市| 榆社县| 保康县| 榆中县| 和林格尔县| 西昌市| 宁强县| 陆良县| 福建省| 集安市| 天等县| 修武县| 台南市| 广丰县| 南漳县| 剑阁县|