Process/Socket interactive
Project description
Intro
- Automatic interaction with a console program
- Automatic interaction with a socket
Install
pip install qinteract
Example
ProcessInteraction
Program to be called (want_right.py):
# coding:utf8
# python3
import random
first_num = str(random.randint(0, 10))
second_num = str(random.randint(0, 10))
first_input = input('input {}: '.format(first_num))
second_input = input('input {}: '.format(second_num))
if first_num==first_input and second_num==second_input:
print('Right!')
else:
print('Wrong!')
Interaction:
# coding:utf8
# python3
from qinteract import ProcessInteraction
command = ['python', 'want_right.py']
pi = ProcessInteraction(command)
for i in range(2):
content = pi.recvuntil_re(r'input (\d+): ')
print(content[0])
num = content[1].group(1)
print(repr(num))
pi.sendline(num)
content = pi.recvline()
print(content)
SocketInteraction
Server side program (server.py):
# coding:utf8
# python3
import random
import socket
import sys
# Create socket object
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 9999
# Bind the port
serversocket.bind(('', port))
# Set the maximum number of connections to queue after exceeding
serversocket.listen(5)
while True:
try:
print('Wait for connection...')
# Establish client connection
clientsocket, addr = serversocket.accept()
print('Connection address: ', addr)
first_num = str(random.randint(0, 10))
second_num = str(random.randint(0, 10))
clientsocket.send('input {}: '.format(first_num).encode('utf8'))
first_input = clientsocket.recv(10).decode('utf8').strip()
clientsocket.send('input {}: '.format(second_num).encode('utf8'))
second_input = clientsocket.recv(10).decode('utf8').strip()
print(first_input)
print(second_input)
if first_num == first_input and second_num == second_input:
clientsocket.send('Right!\n'.encode('utf8'))
else:
clientsocket.send('Wrong!\n'.encode('utf8'))
clientsocket.shutdown(socket.SHUT_RDWR)
clientsocket.close()
except KeyboardInterrupt as identifier:
print('The program was stopped manually')
break
serversocket.close()
Interaction:
# coding:utf8
# python3
from qinteract import SocketInteraction
si = SocketInteraction('127.0.0.1', 9999)
for i in range(2):
content = si.recvuntil_re(r'input (\d+): ')
print(content[0])
num = content[1].group(1)
print(repr(num))
si.sendline(num)
content = si.recvline()
print(content)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
qinteract-0.1.1.tar.gz
(3.3 kB
view hashes)
Built Distribution
Close
Hashes for qinteract-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e10eb30b45b070f6a7728d98b46528aa41c6616455fd69ff89a0d191b7994f7 |
|
MD5 | bbad881bb5b35b4ba34364b7a55303ce |
|
BLAKE2b-256 | efa96ee5744f2d09c19eec561d01f12fe4eeb033dc7dd5e2d32bbf4d6ba66ab1 |