Difference between revisions of "Python-examples"
From Bashlinux
(talk) |
(Redirected page to Python snippets) |
||
Line 1: | Line 1: | ||
+ | #REDIRECT [[Python snippets]] |
||
− | __NOTOC__ |
||
− | = Python: Examples = |
||
− | == How to write a simple server and client in Python == |
||
− | Simple Server/Client communication, communication data is text. |
||
− | |||
− | ==== Server ==== |
||
− | |||
− | <pre><nowiki> |
||
− | import SocketServer |
||
− | |||
− | class EchoRequestHandler(SocketServer.BaseRequestHandler): |
||
− | def setup(self): |
||
− | print self.client_address, 'connected!' |
||
− | self.request.send('hi ' + str(self.client_address) + '\n') |
||
− | |||
− | def handle(self): |
||
− | while 1: |
||
− | data = self.request.recv(1024) |
||
− | self.request.send(data) |
||
− | if data.strip() == 'bye': |
||
− | return |
||
− | |||
− | def finish(self): |
||
− | print self.client_address, 'disconnected!' |
||
− | self.request.send('bye ' + str(self.client_address) + '\n') |
||
− | |||
− | #server host is a tuple ('host', port) |
||
− | server = SocketServer.ThreadingTCPServer(('localhost', 5000), EchoRequestHandler) |
||
− | server.serve_forever() |
||
− | </nowiki></pre> |
||
− | |||
− | |||
− | ==== Client ==== |
||
− | |||
− | <pre><nowiki> |
||
− | import socket |
||
− | |||
− | sock = socket.socket(socket.AF_INET, sock.SOCK_STREAM) |
||
− | sock.connect(('localhost', 5000)) |
||
− | print sock.recv(1024) |
||
− | sock.send('bye') |
||
− | </nowiki></pre> |
||
− | |||
− | |||
− | == How to create a subprocess in a thread with Python == |
||
− | How to call an external command with `Popen`, a subprocess, inside of a thread. |
||
− | |||
− | <pre><nowiki> |
||
− | import threading |
||
− | import subprocess |
||
− | |||
− | class MyClass(threading.Thread): |
||
− | def __init__(self): |
||
− | self.stdout = None |
||
− | self.stderr = None |
||
− | threading.Thread.__init__(self) |
||
− | |||
− | def run(self): |
||
− | p = subprocess.Popen('rsync -av /etc/passwd /tmp'.split(), |
||
− | shell=False, |
||
− | stdout=subprocess.PIPE, |
||
− | stderr=subprocess.PIPE) |
||
− | |||
− | self.stdout, self.stderr = p.communicate() |
||
− | |||
− | myclass = MyClass() |
||
− | myclass.start() |
||
− | myclass.join() |
||
− | print myclass.stdout |
||
− | </nowiki></pre> |
Latest revision as of 05:58, 18 June 2015
Redirect to: