The aifc Module

The aifc module reads and writes AIFF and AIFC audio files (as used on SGI and Macintosh computers). Example 9-4 shows how it's used.

Example 9-4. Using the aifc Module

File: SimpleAsyncHTTP.py

import asyncore
import string, socket
import StringIO
import mimetools, urlparse

class AsyncHTTP(asyncore.dispatcher_with_send):
 # HTTP requestor

 def _ _init_ _(self, uri, consumer):
 asyncore.dispatcher_with_send._ _init_ _(self)

 self.uri = uri
 self.consumer = consumer

 # turn the uri into a valid request
 scheme, host, path, params, query, fragment = urlparse.urlparse(uri)
 assert scheme == "http", "only supports HTTP requests"
 try:
 host, port = string.split(host, ":", 1)
 port = int(port)
 except (TypeError, ValueError):
 port = 80 # default port
 if not path:
 path = "/"
 if params:
 path = path + ";" + params
 if query:
 path = path + "?" + query

 self.request = "GET %s HTTP/1.0
Host: %s

" % (path, host)

 self.host = host
 self.port = port

 self.status = None
 self.header = None

 self.data = ""

 # get things going!
 self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
 self.connect((host, port))

 def handle_connect(self):
 # connection succeeded
 self.send(self.request)

 def handle_expt(self):
 # connection failed; notify consumer (status is None)
 self.close()
 try:
 http_header = self.consumer.http_header
 except AttributeError:
 pass
 else:
 http_header(self)

 def handle_read(self):
 data = self.recv(2048)
 if not self.header:
 self.data = self.data + data
 try:
 i = string.index(self.data, "

")
 except ValueError:
 return # continue
 else:
 # parse header
 fp = StringIO.StringIO(self.data[:i+4])
 # status line is "HTTP/version status message"
 status = fp.readline()
 self.status = string.split(status, " ", 2)
 # followed by a rfc822-style message header
 self.header = mimetools.Message(fp)
 # followed by a newline, and the payload (if any)
 data = self.data[i+4:]
 self.data = ""
 # notify consumer (status is non-zero)
 try:
 http_header = self.consumer.http_header
 except AttributeError:
 pass
 else:
 http_header(self)
 if not self.connected:
 return # channel was closed by consumer

 self.consumer.feed(data)

 def handle_close(self):
 self.consumer.close()
 self.close()

Core Modules

More Standard Modules

Threads and Processes

Data Representation

File Formats

Mail and News Message Processing

Network Protocols

Internationalization

Multimedia Modules

Data Storage

Tools and Utilities

Platform-Specific Modules

Implementation Support Modules

Other Modules



Python Standard Library
Python Standard Library (Nutshell Handbooks) with
ISBN: 0596000960
EAN: 2147483647
Year: 2000
Pages: 252
Authors: Fredrik Lundh

Flylib.com © 2008-2020.
If you may any questions please contact us: flylib@qtcs.net