documentation.
:func:`max`/:func:`min`. Another highly useful function is :func:`reduce`. A
classical use of :func:`reduce` is something like ::
- import sys, operator
+ import operator
+ import sys
nums = map(float, sys.argv[1:])
print reduce(operator.add, nums)/len(nums)
# -*- coding: UTF-8 -*-
# enable debugging
- import cgitb; cgitb.enable()
+ import cgitb
+ cgitb.enable()
print "Content-Type: text/plain;charset=utf-8"
print
# -*- coding: UTF-8 -*-
from cgi import escape
- import sys, os
+ import os
+ import sys
+
from flup.server.fcgi import WSGIServer
def app(environ, start_response):
+import datetime
import sqlite3
-import datetime, time
+import time
def adapt_datetime(ts):
return time.mktime(ts.timetuple())
Here is a very basic HTTP client that uses the :class:`dispatcher` class to
implement its socket handling::
- import asyncore, socket
+ import asyncore
+ import socket
class http_client(asyncore.dispatcher):
module defines all sorts of names for its own use or for backward compatibility
that you don't want in your namespace.
-When you write a new script, consider adding the line::
+When you write a new script, consider adding the following::
- import cgitb; cgitb.enable()
+ import cgitb
+
+ cgitb.enable()
This activates a special exception handler that will display detailed reports in
the Web browser if any errors occur. If you'd rather not show the guts of your
program to users of your script, you can have the reports saved to files
-instead, with a line like this::
+instead, with something like this::
+
+ import cgitb
- import cgitb; cgitb.enable(display=0, logdir="/tmp")
+ cgitb.enable(display=0, logdir="/tmp")
It's very helpful to use this feature during script development. The reports
produced by :mod:`cgitb` provide information that can save you a lot of time in
load the required file or files using :meth:`readfp` before calling :meth:`read`
for any optional files::
- import ConfigParser, os
+ import ConfigParser
+ import os
config = ConfigParser.ConfigParser()
config.readfp(open('defaults.cfg'))
The first example shows the most common usage of :mod:`cookielib`::
- import cookielib, urllib2
+ import cookielib
+ import urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
This example illustrates how to open a URL using your Netscape, Mozilla, or Lynx
cookies (assumes Unix/Netscape convention for location of the cookies file)::
- import os, cookielib, urllib2
+ import cookielib
+ import os
+ import urllib2
cj = cookielib.MozillaCookieJar()
cj.load(os.path.join(os.environ["HOME"], ".netscape/cookies.txt"))
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
A simple example illustrating typical use::
- import crypt, getpass, pwd
+ import crypt
+ import getpass
+ import pwd
def login():
username = raw_input('Python login:')
A slightly more advanced use of the reader --- catching and reporting errors::
- import csv, sys
+ import csv
+ import sys
filename = "some.csv"
reader = csv.reader(open(filename, "rb"))
try:
parameter in their constructor and make sure that the data passes the real
reader or writer encoded as UTF-8::
- import csv, codecs, cStringIO
+ import codecs
+ import cStringIO
+ import csv
class UTF8Recoder:
"""
"""
- import sys, os, time, difflib, optparse
+ import difflib
+ import os
+ import optparse
+ import sys
+ import time
def main():
# Configure the option parser
test suites from modules and text files containing doctests. These test suites
can then be run using :mod:`unittest` test runners::
- import unittest
import doctest
- import my_module_with_doctests, and_another
+ import unittest
+
+ import my_module_with_doctests
+ import my_other_module_with_doctests
suite = unittest.TestSuite()
for mod in my_module_with_doctests, and_another:
Examples (all on a SVR4 compliant system)::
- import struct, fcntl, os
+ import fcntl
+ import os
+ import struct
f = open(...)
rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY)
In a script, typical usage is something like this::
- import getopt, sys
+ import getopt
+ import sys
def main():
try:
Here is a tiny but complete example GL program in Python::
- import gl, GL, time
+ import gl
+ import GL
+ import time
def main():
gl.foreground()
Here is a minimal example (without error checking) that opens a mailbox and
retrieves and prints all messages::
- import getpass, imaplib
+ import getpass
+ import imaplib
M = imaplib.IMAP4()
M.login(getpass.getuser(), getpass.getpass())
::
- import sys, imp, __builtin__
+ import __builtin__
+ import imp
+ import sys
# Replacement for __import__()
def import_hook(name, globals=None, locals=None, fromlist=None):
the receiving end. A simple way of doing this is attaching a
:class:`SocketHandler` instance to the root logger at the sending end::
- import logging, logging.handlers
+ import logging
+ import logging.handlers
rootLogger = logging.getLogger('')
rootLogger.setLevel(logging.DEBUG)
configuration::
#!/usr/bin/env python
- import socket, sys, struct
+ import socket
+ import struct
+ import sys
data_to_send = open(sys.argv[1], "r").read()
The script that is going to get analyzed later on (bacon.py)::
- import re, itertools
+ import itertools
+ import re
try:
import baconhameggs
pickle-containing file, you should open the file in binary mode because you
can't be sure if the ASCII or binary format was used. ::
- import pprint, pickle
+ import pickle
+ import pprint
pkl_file = open('data.pkl', 'rb')
Here is a minimal example (without error checking) that opens a mailbox and
retrieves and prints all messages::
- import getpass, poplib
+ import getpass
+ import poplib
M = poplib.POP3('localhost')
M.user(getpass.getuser())
before opening the file; if the operation takes too long, the alarm signal will
be sent, and the handler raises an exception. ::
- import signal, os
+ import os
+ import signal
def handler(signum, frame):
print 'Signal handler called with signal', signum
Example::
# Convert file existing_db.db to SQL dump file dump.sql
- import sqlite3, os
+ import os
+ import sqlite3
con = sqlite3.connect('existing_db.db')
with open('dump.sql', 'w') as f:
This example connects to an SSL server, prints the server's address and certificate,
sends some bytes, and reads part of the response::
- import socket, ssl, pprint
+ import pprint
+ import socket
+ import ssl
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
You'd open a socket, bind it to a port, call :meth:`listen` on it, then start waiting for clients
to connect::
- import socket, ssl
+ import socket
+ import ssl
bindsocket = socket.socket()
bindsocket.bind(('myaddr.mydomain.com', 10023))
Example::
- import os, sys
+ import os
+ import sys
from stat import *
def walktree(top, callback):
The audio device supports asynchronous notification of various events, through
the SIGPOLL signal. Here's an example of how you might enable this in Python::
+ import fcntl
+ import signal
+ import STROPTS
+
def handle_sigpoll(signum, frame):
print 'I got a SIGPOLL update'
- import fcntl, signal, STROPTS
-
signal.signal(signal.SIGPOLL, handle_sigpoll)
fcntl.ioctl(audio_obj.fileno(), STROPTS.I_SETSIG, STROPTS.S_MSG)
exactly no matter what happens::
def getpass(prompt = "Password: "):
- import termios, sys
+ import sys
+ import termios
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
complete implementation of the interpreter loop, refer to the :mod:`code`
module. ::
- import sys, traceback
+ import sys
+ import traceback
def run_user_code(envdir):
source = raw_input(">>> ")
The following example demonstrates the different ways to print and format the
exception and traceback::
- import sys, traceback
+ import sys
+ import traceback
def lumberjack():
bright_side_of_death()
::
- import xmlrpclib, httplib
+ import httplib
+ import xmlrpclib
class ProxiedTransport(xmlrpclib.Transport):
def set_proxy(self, proxy):
enable it in the interpreter's interactive mode, add the following to your
startup file: [#]_ ::
- import rlcompleter, readline
+ import readline
+ import rlcompleter
readline.parse_and_bind('tab: complete')
This binds the :kbd:`Tab` key to the completion function, so hitting the
The following code shows how the high level :mod:`threading` module can run
tasks in background while the main program continues to run::
- import threading, zipfile
+ import threading
+ import zipfile
class AsyncZip(threading.Thread):
def __init__(self, infile, outfile):
Finally, the :func:`closing(object)` function returns *object* so that it can be
bound to a variable, and calls ``object.close`` at the end of the block. ::
- import urllib, sys
+ import sys
+ import urllib
from contextlib import closing
with closing(urllib.urlopen('http://www.yahoo.com')) as f: