Latest web development tutorials

Python3 Biblioteca Padrão Overview

Operativo System Interface

módulo os fornece uma série de funções relacionadas com o sistema operacional ligados.

>>> import os
>>> os.getcwd()      # 返回当前的工作目录
'C:\\Python34'
>>> os.chdir('/server/accesslogs')   # 修改当前的工作目录
>>> os.system('mkdir today')   # 执行系统命令 mkdir 
0

Recomendamos o uso do estilo "import os" em vez de "a partir do OS import *". Isso garante que com o sistema operacional variam em os.open diferente () não substituir a função built-in open ().

Quando você usa o sistema operacional um grande módulo, tais built-in dir () e ajuda () funções são úteis:

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

Para tarefas de arquivo e gerenciamento de diretórios diárias ,: mod: módulo shutil fornece uma interface de alto nível que é mais fácil de usar:

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

arquivo curinga

módulo glob fornece uma função para fazer listas de arquivos das pesquisas de diretório curinga:

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

parâmetros de linha de comando

scripts de utilitários comuns invocam frequentemente os parâmetros da linha de comando. Estes argumentos de linha de comando como uma lista armazenada no módulo sys variável argv. Você pode obter o seguinte exemplo de saída, após a implementação do "python demo.py um dois três" na linha de comando:

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

Erro de redirecionamento de saída e Rescisão Programa

sys, e também propriedades stdin, stdout e stderr, mesmo quando stdout foi redirecionado, este último também pode ser usado para exibir avisos e mensagens de erro.

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

A maioria dos scripts são direcionados para encerrar o uso de "sys.exit ()".


jogo seqüência regular

re para o módulo de processamento de cadeia avançada fornece ferramentas de expressão regular. Para a correspondência e manipulação complexa, expressões regulares oferecem soluções sucinta, otimizados:

>>> 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'

Se você só precisa de uma função simples, você deve primeiro considerar o método de corda, uma vez que eles são mais fáceis de ler e depurar:

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

matemática

flutuante módulo de ponto de matemática fornece acesso à biblioteca C subjacente:

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

aleatório fornece ferramentas para a geração de números aleatórios.

>>> import random
>>> random.choice(['apple', 'pear', 'banana'])
'apple'
>>> random.sample(range(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

acesso à Internet

Existem vários módulos de acesso à internet e processamento de protocolos de internet. Dois dos mais simples é processar os dados recebidos a partir de urls e urllib.request smtplib para o envio de e-mail:

>>> from urllib.request import urlopen
>>> for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     line = line.decode('utf-8')  # Decoding the binary data to text.
...     if 'EST' in line or 'EDT' in line:  # look for Eastern Time
...         print(line)

<BR>Nov. 25, 09:43:32 PM EST

>>> import smtplib
>>> server = smtplib.SMTP('localhost')
>>> server.sendmail('[email protected]', '[email protected]',
... """To: [email protected]
... From: [email protected]
...
... Beware the Ides of March.
... """)
>>> server.quit()

Note-se que o segundo exemplo exige um servidor de correio local tem em execução.


Data e Hora

módulo de data e hora para a data e horários em ambas as formas simples e complexas.

data de apoio e aritmética tempo, embora incidindo sobre a realização de um processamento mais eficiente e formatação de saída.

O módulo também suporta processador de fuso horário:

>>> # 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

Data Compression

Os seguintes módulos suportam diretamente arquivamento e compressão de formatos de dados comum: zlib, gzip, bz2, zipfile e tarfile.

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

métricas de desempenho

Desempenho de diferentes métodos para alguns usuários a entender o mesmo problema entre muito interessado. Python fornece uma ferramenta de medição que fornece respostas diretas a essas perguntas.

Por exemplo, usar a embalagem tupla e descompactação elemento de troca parece melhor do que usando métodos tradicionais para mais atraente, abordagem moderna timeit provou mais rápido.

>>> 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

Com relação timeit de grão fino ,: mod: perfil e módulo pstats fornece uma medida de tempo para grandes blocos de ferramenta de código.


Módulo de teste

Uma forma é o desenvolvimento de desenvolvimento de software de alta qualidade e de ensaio de cada código de função, e no processo de desenvolvimento frequentemente testados

doctest módulo fornece uma ferramenta para a digitalização de um módulo de programa e incorporado no teste de cadeia documento é realizada de acordo com.

construção de teste é tão simples como a sua saída recortado e colado na seqüência documento.

A título de exemplo fornecido pelo usuário, reforça o documento, permitindo módulo doctest para garantir que o código permanece fiel à documentação:

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

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

import doctest
doctest.testmod()   # 自动验证嵌入测试

Ao contrário doctest módulo unittest módulo tão fácil de usar, mas pode fornecer um conjunto mais abrangente de testes em um arquivo separado:

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