Difference between revisions of "Python-examples"

From Bashlinux
Jump to: navigation, search
(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: