青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Welcome to 陳俊峰's ---BeetleHeaded Man Blog !

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  58 隨筆 :: 32 文章 :: 18 評論 :: 0 Trackbacks
Subsections


10. Brief Tour of the Standard Library


10.1 Operating System Interface

The os module provides dozens of functions for interacting with the operating system:

>>> import os
>>> os.system('time 0:02')
0
>>> os.getcwd()      # Return the current working directory
'C:\\Python24'
>>> os.chdir('/server/accesslogs')

Be sure to use the "import os" style instead of "from os import *". This will keep os.open() from shadowing the builtin open() function which operates much differently.

The builtin dir() and help() functions are useful as interactive aids for working with large modules like os:

>>> import os
>>> dir(os)
<returns a list of all module functions>
>>> help(os)
<returns an extensive manual page created from the module's docstrings>

For daily file and directory management tasks, the shutil module provides a higher level interface that is easier to use:

>>> import shutil
>>> shutil.copyfile('data.db', 'archive.db')
>>> shutil.move('/build/executables', 'installdir')


10.2 File Wildcards

The glob module provides a function for making file lists from directory wildcard searches:

>>> import glob
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']


10.3 Command Line Arguments

Common utility scripts often need to process command line arguments. These arguments are stored in the sys module's argv attribute as a list. For instance the following output results from running "python demo.py one two three" at the command line:

>>> import sys
>>> print sys.argv
['demo.py', 'one', 'two', 'three']

The getopt module processes sys.argv using the conventions of the Unixgetopt() function. More powerful and flexible command line processing is provided by the optparse module.


10.4 Error Output Redirection and Program Termination

The sys module also has attributes for stdin, stdout, and stderr. The latter is useful for emitting warnings and error messages to make them visible even when stdout has been redirected:

>>> sys.stderr.write('Warning, log file not found starting a new one\n')
Warning, log file not found starting a new one

The most direct way to terminate a script is to use "sys.exit()".


10.5 String Pattern Matching

The re module provides regular expression tools for advanced string processing. For complex matching and manipulation, regular expressions offer succinct, optimized solutions:

>>> import re
>>> re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
>>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'

When only simple capabilities are needed, string methods are preferred because they are easier to read and debug:

>>> 'tea for too'.replace('too', 'two')
'tea for two'


10.6 Mathematics

The math module gives access to the underlying C library functions for floating point math:

>>> import math
>>> math.cos(math.pi / 4.0)
0.70710678118654757
>>> math.log(1024, 2)
10.0

The random module provides tools for making random selections:

>>> import random
>>> random.choice(['apple', 'pear', 'banana'])
'apple'
>>> random.sample(xrange(100), 10)   # sampling without replacement
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>>> random.random()    # random float
0.17970987693706186
>>> random.randrange(6)    # random integer chosen from range(6)
4


10.7 Internet Access

There are a number of modules for accessing the internet and processing internet protocols. Two of the simplest are urllib2 for retrieving data from urls and smtplib for sending mail:

>>> import urllib2
>>> for line in urllib2.urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     if 'EST' in line:      # look for Eastern Standard Time
...         print line
    
<BR>Nov. 25, 09:43:32 PM EST

>>> import smtplib
>>> server = smtplib.SMTP('localhost')
>>> server.sendmail('soothsayer@example.org', 'jcaesar@example.org',
"""To: jcaesar@example.org
From: soothsayer@example.org

Beware the Ides of March.
""")
>>> server.quit()


10.8 Dates and Times

The datetime module supplies classes for manipulating dates and times in both simple and complex ways. While date and time arithmetic is supported, the focus of the implementation is on efficient member extraction for output formatting and manipulation. The module also supports objects that are time zone aware.

# dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'

# dates support calendar arithmetic
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday
>>> age.days
14368


10.9 Data Compression

Common data archiving and compression formats are directly supported by modules including: zlib, gzip, bz2, zipfile, and tarfile.

>>> import zlib
>>> s = 'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979


10.10 Performance Measurement

Some Python users develop a deep interest in knowing the relative performance of different approaches to the same problem. Python provides a measurement tool that answers those questions immediately.

For example, it may be tempting to use the tuple packing and unpacking feature instead of the traditional approach to swapping arguments. The timeit module quickly demonstrates a modest performance advantage:

>>> from timeit import Timer
>>> Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
0.57535828626024577
>>> Timer('a,b = b,a', 'a=1; b=2').timeit()
0.54962537085770791

In contrast to timeit's fine level of granularity, the profile and pstats modules provide tools for identifying time critical sections in larger blocks of code.


10.11 Quality Control

One approach for developing high quality software is to write tests for each function as it is developed and to run those tests frequently during the development process.

The doctest module provides a tool for scanning a module and validating tests embedded in a program's docstrings. Test construction is as simple as cutting-and-pasting a typical call along with its results into the docstring. This improves the documentation by providing the user with an example and it allows the doctest module to make sure the code remains true to the documentation:

def average(values):
    """Computes the arithmetic mean of a list of numbers.

    >>> print average([20, 30, 70])
    40.0
    """
    return sum(values, 0.0) / len(values)

import doctest
doctest.testmod()   # automatically validate the embedded tests

The unittest module is not as effortless as the doctest module, but it allows a more comprehensive set of tests to be maintained in a separate file:

import unittest

class TestStatisticalFunctions(unittest.TestCase):

    def test_average(self):
        self.assertEqual(average([20, 30, 70]), 40.0)
        self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
        self.assertRaises(ZeroDivisionError, average, [])
        self.assertRaises(TypeError, average, 20, 30, 70)

unittest.main() # Calling from the command line invokes all tests


10.12 Batteries Included

Python has a ``batteries included'' philosophy. This is best seen through the sophisticated and robust capabilities of its larger packages. For example:

  • The xmlrpclib and SimpleXMLRPCServer modules make implementing remote procedure calls into an almost trivial task. Despite the names, no direct knowledge or handling of XML is needed.
  • The email package is a library for managing email messages, including MIME and other RFC 2822-based message documents. Unlike smtplib and poplib which actually send and receive messages, the email package has a complete toolset for building or decoding complex message structures (including attachments) and for implementing internet encoding and header protocols.
  • The xml.dom and xml.sax packages provide robust support for parsing this popular data interchange format. Likewise, the csv module supports direct reads and writes in a common database format. Together, these modules and packages greatly simplify data interchange between python applications and other tools.
  • Internationalization is supported by a number of modules including gettext, locale, and the codecs package.
posted on 2006-04-13 19:43 Jeff-Chen 閱讀(321) 評論(0)  編輯 收藏 引用 所屬分類: Python
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女黄色成人网| 久久精品成人欧美大片古装| 欧美不卡视频一区发布| 影音先锋日韩有码| 老司机成人网| 美女福利精品视频| 一本大道久久a久久综合婷婷| 亚洲人成在线观看一区二区| 欧美区高清在线| 亚洲一区二区三区成人在线视频精品| 亚洲精选一区| 国产欧美91| 久久一区二区精品| 女女同性女同一区二区三区91| 亚洲免费观看在线观看| 日韩图片一区| 国产日韩亚洲欧美综合| 免费成人在线视频网站| 欧美激情综合在线| 性欧美xxxx大乳国产app| 欧美一区二区啪啪| 亚洲青涩在线| 亚洲视频中文字幕| 亚洲电影自拍| 亚洲午夜激情| 在线免费观看日韩欧美| 日韩系列在线| 一区三区视频| 一本色道久久加勒比精品| 国内精品久久久久伊人av| 欧美激情第3页| 国产日韩精品在线| 亚洲人成人一区二区三区| 国产日韩一区| av成人黄色| 亚洲福利专区| 午夜精品美女自拍福到在线| 亚洲精品在线视频| 久久精品国产清高在天天线| 亚洲一区999| 免费亚洲视频| 久久综合久久久久88| 欧美色道久久88综合亚洲精品| 久久久久久色| 国产精品一二一区| 日韩午夜精品| 日韩午夜剧场| 久久伊伊香蕉| 麻豆精品精华液| 国产欧美日韩不卡| 在线综合视频| 9色精品在线| 欧美成人免费在线观看| 久久中文在线| 国产一区二区三区视频在线观看| 亚洲作爱视频| 亚洲一区二区成人在线观看| 欧美不卡视频一区发布| 欧美成人精品激情在线观看| 国产日韩欧美三级| 日韩视频免费观看| 久久久青草青青国产亚洲免观| 欧美一级视频免费在线观看| 国产精品久久久久免费a∨| 亚洲美女av电影| 99精品国产在热久久| 欧美aⅴ一区二区三区视频| 欧美成人亚洲成人日韩成人| 国产一区二区三区四区五区美女| 亚洲免费视频观看| 久久超碰97中文字幕| 国产免费亚洲高清| 欧美一区二区国产| 久久婷婷亚洲| 亚洲福利小视频| 欧美大片在线观看一区| 亚洲电影免费在线观看| 亚洲美女网站| 欧美午夜精品久久久久免费视| 一本久久综合亚洲鲁鲁五月天| 亚洲伊人第一页| 国产麻豆成人精品| 久久久999精品| 欧美黄色一区| 亚洲午夜精品一区二区| 国产精品日韩在线一区| 欧美一区二区三区免费在线看| 久久嫩草精品久久久精品一| 亚洲国产日日夜夜| 欧美日韩综合在线| 亚洲欧美制服另类日韩| 免费久久99精品国产| 99精品久久久| 国产欧美日韩视频一区二区| 久久九九精品| 日韩视频第一页| 久久精品人人做人人爽电影蜜月| 在线成人小视频| 欧美日韩国产在线播放网站| 亚洲夜间福利| 葵司免费一区二区三区四区五区| 日韩视频久久| 国产亚洲精品久| 欧美经典一区二区三区| 亚洲欧美日韩电影| 亚洲成色777777女色窝| 亚洲欧美制服另类日韩| 亚洲国产欧美日韩另类综合| 国产精品白丝黑袜喷水久久久| 久久av红桃一区二区小说| 亚洲日本视频| 久久综合久久88| 亚洲免费伊人电影在线观看av| 狠狠久久亚洲欧美专区| 欧美日韩一区免费| 久久婷婷激情| 亚洲图片欧洲图片日韩av| 亚洲成人在线网站| 久久精品一区四区| 亚洲午夜女主播在线直播| 亚洲二区在线观看| 国产日韩欧美一区二区三区四区| 欧美国产先锋| 久久美女性网| 性感少妇一区| 亚洲一区二区不卡免费| 亚洲精品一二三| 欧美福利视频在线观看| 久久久免费观看视频| 午夜精品久久久久久久蜜桃app| 亚洲日本在线观看| 在线观看成人小视频| 国产亚洲激情视频在线| 国产精品久久久久免费a∨大胸| 欧美绝品在线观看成人午夜影视| 久久青草欧美一区二区三区| 欧美在线视频免费| 日韩一级大片| 亚洲三级视频在线观看| 91久久精品视频| 亚洲第一精品福利| 在线成人激情视频| 亚洲国产高清在线观看视频| 一区二区三区在线视频播放| 国产午夜亚洲精品不卡| 国产精品视频大全| 国产精品视频区| 国产欧美日韩综合| 国产一区二区视频在线观看| 国产日韩在线视频| 国内自拍视频一区二区三区| 红桃视频成人| 亚洲国产欧美一区二区三区丁香婷| 在线观看视频免费一区二区三区| 在线观看日韩av| 亚洲国产成人不卡| 亚洲靠逼com| 中国女人久久久| 午夜在线视频一区二区区别| 久久精品视频导航| 久久琪琪电影院| 欧美激情精品久久久| 亚洲国产三级| 亚洲视频精品在线| 午夜精品视频在线观看一区二区| 久久xxxx| 欧美xx视频| 国产精品美女xx| 韩国在线视频一区| 亚洲精品国产视频| 亚洲欧美成人综合| 久久久久一本一区二区青青蜜月| 蜜臀a∨国产成人精品| 亚洲国产日韩欧美综合久久| 日韩天堂在线视频| 欧美一级淫片播放口| 女仆av观看一区| 国产精品视频专区| 在线播放国产一区中文字幕剧情欧美| 亚洲精品在线二区| 欧美中文字幕第一页| 欧美激情精品久久久久久黑人| 一本色道久久88综合日韩精品| 欧美一区二区三区视频| 欧美大片在线影院| 国产亚洲欧美一区二区| 日韩系列欧美系列| 久久九九免费| 99视频精品全部免费在线| 久久九九精品| 国产精品久久久久久久午夜| 亚洲激情在线观看视频免费| 性色av香蕉一区二区| 亚洲国产精品va| 欧美在线亚洲在线| 欧美香蕉大胸在线视频观看| 亚洲国产欧美一区二区三区丁香婷| 性8sex亚洲区入口| 99日韩精品| 欧美精品播放|