1.1.说明:
    Wexpect 是一个 Python 模块,用于生成子应用程序并自动控制它们
    Wexpect 可用于自动化交互式应用程序,例如 ssh、ftp、passwd、telnet 等
    它可用于自动化安装脚本,以在不同服务器上复制软件包安装
    它可用于自动化软件测试。Wexpect 本着 Don Libes 的 Expect 的精神,但 Wexpect 是纯 Python
    Python 的其他类似 Expect 的模块需要 TCL 和 Expect 或需要编译 C 扩展
    Wexpect 不使用 C、Expect 或 TCL 扩展。
    原始 Pexpect 应该适用于支持标准 Python pty 模块的任何平台
    Wexpect 适用于 Windows 平台。Wexpect 界面注重易用性,让简单的任务变得容易
1.2.Install
    pip install wexpect
2.实例:
实例1:To interract with a child process use spawn method:
import wexpect
def test():
    child = wexpect.spawn('cmd.exe')
    child.expect('>')
    child.sendline('ls')
    child.expect('>')
    print(child.before)
    child.sendline('exit')
# 它启动一个 Windows 命令解释器(又名 cmd)列出当前目录并退出 def hello_wexpect(): # Start cmd as child process child = wexpect.spawn('cmd.exe') # Wait for prompt when cmd becomes ready. child.expect('>') # Prints the cmd's start message print('1.before = ',child.before) print('2.after = ',child.after) # run list directory command child.sendline('ls') # Waiting for prompt child.expect('>') # Prints content of the directory print('3.before = ',child.before) print('4.after = ',child.after) # Exit from cmd child.sendline('exit') # Waiting for cmd termination. child.wait() C:\ProgramData\Anaconda3\python.exe E:/程序/Python代码/wrap_ha/juejin/OpSql.py [('future_base',), ('information_schema',), ('mysql',), ('new_futures',), ('performance_schema',), ('sakila',), ('sys',), ('world',)] 1.before = Microsoft Windows [版本 10.0.18362.387](c) 2019 Microsoft Corporation。保留所有权利。 (base) E:\程序\Python代码\wrap_ha\juejin 2.after = > (base) E:\程序\Python代码\wrap_ha\juejin 4.after = >
实例3.1:
是一个完整的自定义示例代码。此示例脚本运行foo python 程序,并与之通信。
请本地运行 foo首先是 .py,这是一个非常基本的 stdio 处理程序脚本。
import sys
import wexpect
import os
here = os.path.dirname(os.path.realpath(__file__))
# Path of python executable:
pythonInterp = sys.executable
prompt = ': '
# Start the child process
p = wexpect.spawn(pythonInterp, [here + '\\foo.py'])
# Wait for prompt
p.expect(prompt)
print(p.before)
# Send the 'small integer'
p.sendline('3')
p.expect(prompt)
print(p.before)
# print the texts
print(p.before, end='')
print(p.match.group(0), end='')
# Send the name
p.sendline('Bob')
# wait for program exit.
p.wait()
# print the texts
print(p.read(), end='')
实例3.2:foo.py
This is is a very basic stdio handler script. This is used by python.py example.
import time
# Read an integer from the user:
print('Give a small integer: ', end='')
num = input()
# Wait the given time
for i in range(int(num)):
    print('waiter ' + str(i))
    time.sleep(0.2)
# Ask the name of the user to say hello.
print('Give your name: ', end='')
name = input()
print('Hello ' + str(name), end='')
from __future__ import print_function import sys import os import re here = os.path.dirname(os.path.abspath(__file__)) wexpectPath = os.path.dirname(here) import wexpect # Path of cmd executable: cmd_exe = 'cmd' # The prompt should be more sophisticated than just a '>'. cmdPrompt = re.compile('[A-Z]\:.+>') # Start the child process p = wexpect.spawn(cmd_exe) # Wait for prompt p.expect(cmdPrompt, timeout = 5) # print the texts print(p.before, end='') print(p.match.group(0), end='') while True: # Wait and run a command. command = input() p.sendline(command) # Wait for prompt p.expect(cmdPrompt) # print the texts print(p.before, end='') print(p.match.group(0), end='') except wexpect.EOF: # The program has exited print('The program has exied... BY!') break def gen_model(self,db_name:str,model_name:str='',user='root',password='root',host='localhost'): father_path = os.path.abspath(os.path.dirname(os.getcwd())) model_name = model_name if model_name else db_name +'_model.py' cmd = r'python -m pwiz -e mysql -u %s -H %s -P %s > %s\peewee_data\%s'%( user,host,db_name,father_path,model_name) #python -m pwiz -e mysql -u root -H localhost -P new_futures > E:\程序\Python代码\wrap_ha\peewee_data\new_futures_model.py child = wexpect.spawn('cmd.exe') child.expect('>') child.sendline(cmd) child.expect(':') print(child.before) child.sendline(password) child.expect('>') child.sendline('exit')

wexpect · PyPI

P expect 是一个 Python 模块,用于生成子应用程序并 自动 对其进行控制。 您是否需要w expect ,如果... 您想通过 python 脚本控制任何 Windows 控制台 应用程序。 您要为 Windows 控制台 应用程序编写测试 自动 化脚本。 您想通过同步并行控制多个应用程序来 自动 化您的工作。 pip install w expect 要与子进程进行交互,请使用spawn方法: import w expect prompt = '[A-Z]\:.+>' child = w expect . spawn ( 'cmd.exe' ) child . expect ( prompt ) # Wait for startup prompt child . sendline ( 'dir' ) # List the curren 第一步得在Pycharm的官网下载适用与自己版本的软件,下好后会给你提示说要注册码,网上找一个登录,里面的File有一个setting点进去,在project interpreter里,有一个小加号,里面搜索p expect ,然后下载就可以了。 我们再试一下import p expect ,没有编译错误就说明成功。 P expect 是 Don Libes 的 Expect 语言 的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其 自动 交互的 Python 模块。 P expect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的 自动 交互;可以用来 自动 复制软件安装包并在不同机器 自动 安装;还可以用来实现软件测试中与命令行交互的 自动 化。 ... import sys future_code = 'M1809' url_str = ('http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesDailyKLine?symbol=' + future_code) r = requests.get(url_str) r_json = r.json() r_lists = list(r_json) print('future_code,date,open,high,low,close,vol') for r_list in r_lists: for v in r_list: print(v + ',',end='') print('\n') array = [] with open('D:\\UiPath\\凭据地址.txt', 'r', encoding='utf-8') as f: for line in f.readlines(): line = line.strip() a = win32cred.CredRead(line, 1)["UserName"] 首先申明,该文章只可以用于交流学习,不可以用于其他用途,否则后果自负。 现在国家对网络安全的管理,越来越严,但是还是有一些不法网站逍遥法外,受限于国内的人力、物力,无法对这些网站进行取缔。 今天演示的这个网站,就是属于非法的网站。 首先看登陆界面。 抓取登陆信息。 使用Post Form表单的形式,进行用户名和 密码 的提交。接下来我们看提交的用户名和 密码 。 我输... 今天在同事的服务器上执行一个 python 脚本,发现它在运行的时候始终没有打印命令的log。 因为p expect 的初始logfile是指向None,所以我修改了logfile,但是发现还是没有输出。 child = p expect .spawn('some_command') child.logfile = sys.stdout 于是我去查看了一下p expect .py,发现在它的版本很低,,lo 利用 Python 代码获取web 密码 程序的脚本源代码分享,达到能够抓取用户名、 密码 、cookie等信息的方法详解。需要用到 pcap、dpkt两个方法模块,请确认已经安装成功。 python 做的web获取解 密码 程序代码如下:# -*- coding: utf8 -*-#!/usr/bin/env python import pcapimport dpktdev='eth0'filter='tcp dst... filter='tcp dst port 80' pc=pcap.pcap(dev) #注,参数可为网卡名,如eth0 pc.setfilter(filter) #设置监听过滤器 hostlist=['xiaonei.com', 'r 摘要:在一个 Python 项目中,要执行“/usr/bin/sftpaliyunzixun@xxx.com”命令连接远程FTP服务器,代码如下:_pass='assword:'_prompt='sftp>'_newKey="Areyousureyouwanttocontinueconnecting(yes/no)?"self._client=p expect .spawn(command_conn...