Latest web development tutorials

Python3 estándar Biblioteca Información general

Operating System Interface

módulo os proporciona una serie de funciones relacionadas con el sistema operativo vinculado.

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

Se recomienda el uso del estilo de "import os" en lugar de "de import os *". Esto asegura que con el sistema operativo varían en diferentes os.open () no anula la función incorporada open ().

Cuando se utiliza un módulo de sistema operativo de gran tamaño, una función de dir () y ayuda () funciones son útiles:

>>> 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 las tareas de la administración de directorios diarias ,: mod: Módulo shutil proporciona una interfaz de alto nivel que es más fácil de usar:

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

comodín archivo

módulo glob proporciona una función para hacer listas de archivos del directorio de búsquedas comodín:

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

Parámetros de línea de comandos

scripts de utilidades comunes suelen invocar los parámetros de línea de comandos. Estos argumentos de línea de comandos como una lista almacenada en el módulo sys variables argv. Usted puede obtener el siguiente ejemplo de salida, después de la aplicación de la "serpiente pitón demo.py uno dos tres" en la línea de comandos:

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

Error de redirección de salida y la terminación del programa

sys, y también propiedades stdin, stdout y stderr, stdout incluso cuando se ha redirigido, este último también se puede utilizar para mostrar advertencias y mensajes de error.

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

La mayoría de las secuencias de comandos están dirigidos a dar por terminado el uso de "sys.exit ()".


partido de cadena normal

re para el módulo de procesamiento avanzado de cadenas proporciona herramientas de expresiones regulares. Para la adaptación y la manipulación compleja, las expresiones regulares ofrecen soluciones optimizadas sucintas:

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

Si sólo necesita una simple función, se debe considerar en primer lugar el método de cadena, ya que son más fáciles de leer y depurar:

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

matemáticas

flotante módulo de matemáticas de punto proporciona acceso a la biblioteca C subyacente:

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

aleatoria proporciona herramientas para la generación de números aleatorios.

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

acceso a Internet

Hay varios módulos para acceder a Internet y procesamiento de protocolos de Internet. Dos de las más simples es procesar los datos recibidos de las direcciones URL y urllib.request smtplib para el envío 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()

Tenga en cuenta que el segundo ejemplo se requiere un servidor de correo local se estén ejecutando.


Fecha y Hora

módulo de fecha y hora para la fecha y las horas en las dos formas simples y complejas.

fecha de soporte y la aritmética tiempo, mientras se centra en la realización de un proceso más eficiente y el formato de salida.

El módulo también es compatible con el procesador de zona horaria:

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

compresión de datos

Los siguientes módulos soportan directamente los formatos de archivo y compresión de datos comunes: zlib, gzip, bz2, archivo zip, y el archivo tar.

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

Las mediciones de rendimiento

Rendimiento de los diferentes métodos para algunos usuarios a entender el mismo problema entre los muy interesados. Python proporciona una herramienta de medición que proporciona respuestas directas a estas preguntas.

Por ejemplo, use el embalaje y desembalaje tupla elemento de intercambio se ve mejor que usando métodos tradicionales para más atractiva, enfoque moderno timeit demostró más 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

Con respecto TimeIt de grano fino ,: mod: perfil y módulo de pstats proporciona una medida de tiempo para los bloques más grandes de la herramienta de código.


Módulo de pruebas

Una forma es el desarrollo de desarrollo de software de alta calidad y prueba de cada código de función, y en el proceso de desarrollo a menudo se prueba

módulo doctest proporciona una herramienta para la exploración de un módulo y programa incorporado en la prueba de cadena documento se realiza de acuerdo con.

la construcción de pruebas es tan simple como su salida corta y se pega en la cadena documento.

A modo de ejemplo proporcionado por el usuario, se refuerza el documento, permitiendo módulo doctest para asegurarse de que el código se mantiene fiel a la documentación:

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()   # 自动验证嵌入测试

A diferencia de módulo de doctest unittest módulo tan fácil de usar, pero puede proporcionar un conjunto más amplio de pruebas en un archivo 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