Python
Python
Python - Inicio
Python - Descripción general
Python - Configuración del entorno
Python - Sintaxis Básica
Python - Tipos de variables
Python - Operadores básicos
Python - Toma de decisiones
Python - Bucles
Python - Números
Python - Cadenas
Python - Listas
Python - Tuplas
Python - Diccionario
Python - Fecha y hora
Python - Funciones
Python - Módulos
Python - E / S de archivos
Python - Excepciones
Tutorial avanzado de Python
Python - Clases / Objetos
Python - Expresiones Reg
Python - Programación CGI
Python - Acceso a la base de datos
Python - Redes
Python - Envío de correo electrónico
Python - Multithreading
Python - Procesamiento XML
Python - Programación GUI
Python - Extensiones adicionales
Descripción general de Python
Python es un lenguaje de scripting de alto nivel, interpretado, interactivo y
orientado a objetos. Python está diseñado para ser altamente legible. Utiliza
palabras clave en inglés con frecuencia, mientras que otros idiomas usan
signos de puntuación, y tiene menos construcciones sintácticas que otros
idiomas.
Python se interpreta : Python es procesado en tiempo de ejecución por el
intérprete. No necesita compilar su programa antes de ejecutarlo. Esto es similar
a PERL y PHP.
Python es interactivo : puede sentarse en un indicador de Python e interactuar
con el intérprete directamente para escribir sus programas.
Python está orientado a objetos : Python admite el estilo o la técnica de
programación orientada a objetos que encapsula el código dentro de los objetos.
Python es un lenguaje para principiantes: Python es un excelente lenguaje para
los programadores de nivel principiante y admite el desarrollo de una amplia gama
de aplicaciones, desde el procesamiento de texto simple hasta los navegadores
WWW y los juegos.
Características de Python
Las características de Python incluyen:
Fácil de aprender : Python tiene pocas palabras clave, estructura simple y una
sintaxis claramente definida. Esto le permite al alumno aprender el idioma
rápidamente.
Fácil de leer : el código de Python está más claramente definido y visible para los
ojos.
Fácil de mantener : el código fuente de Python es bastante fácil de mantener.
Una biblioteca estándar amplia : la mayor parte de la biblioteca de Python es
muy portátil y compatible con plataformas cruzadas en UNIX, Windows y
Macintosh.
Modo interactivo : Python admite un modo interactivo que permite realizar
pruebas interactivas y depurar fragmentos de código.
Portátil : Python puede ejecutarse en una amplia variedad de plataformas de
hardware y tiene la misma interfaz en todas las plataformas.
Extensible : puede agregar módulos de bajo nivel al intérprete de Python. Estos
módulos permiten a los programadores agregar o personalizar sus herramientas
para ser más eficientes.
Bases de datos : Python proporciona interfaces a todas las principales bases de
datos comerciales.
Programación GUI : Python admite aplicaciones GUI que se pueden crear y
portar a muchas llamadas de sistema, bibliotecas y sistemas Windows, como
Windows MFC, Macintosh y el sistema X Window de Unix.
Escalable : Python proporciona una mejor estructura y soporte para programas
grandes que los scripts de shell.
Además de las características mencionadas anteriormente, Python tiene una
gran lista de buenas características, algunas se enumeran a continuación:
Admite métodos de programación funcionales y estructurados, así como OOP.
Se puede usar como un lenguaje de scripting o se puede compilar en código de
bytes para construir aplicaciones grandes.
Proporciona tipos de datos dinámicos de muy alto nivel y admite la verificación de
tipos dinámicos.
Es compatible con la recolección automática de basura.
Se puede integrar fácilmente con C, C ++, COM, ActiveX, CORBA y Java.
Python - Configuración del entorno
Python está disponible en una amplia variedad de plataformas, incluidas Linux
y Mac OS X. Comprendamos cómo configurar nuestro entorno Python.
Instalando Python
La distribución de Python está disponible para una amplia variedad de
plataformas. Necesita descargar solo el código binario aplicable a su
plataforma e instalar Python.
Si el código binario para su plataforma no está disponible, necesita un
compilador de C para compilar el código fuente manualmente. Compilar el
código fuente ofrece más flexibilidad en cuanto a la elección de las
características que necesita en su instalación.
Aquí hay una descripción rápida de la instalación de Python en varias
plataformas:
Estos son los pasos simples para instalar Python en la máquina Unix / Linux.
Abra un navegador web y vaya a https://www.python.org/downloads/ .
Siga el enlace para descargar el código fuente comprimido disponible para Unix /
Linux.
Descargar y extraer archivos.
Edición del archivo Módulos / Configuración si desea personalizar algunas
opciones.
ejecute ./configure script
hacer
hacer instalar
Esto instala Python en la ubicación estándar / usr / local / bin y sus bibliotecas
en / usr / local / lib / pythonXX donde XX es la versión de Python.
Instalación de ventanas
Estos son los pasos para instalar Python en una máquina con Windows.
Abra un navegador web y vaya a https://www.python.org/downloads/ .
Siga el enlace para el archivo de instalación de Windows python-XYZ.msi donde
XYZ es la versión que necesita instalar.
Para usar este instalador python-XYZ.msi , el sistema Windows debe ser
compatible con Microsoft Installer 2.0. Guarde el archivo de instalación en su
máquina local y luego ejecútelo para averiguar si su máquina es compatible con
MSI.
Ejecute el archivo descargado. Esto muestra el asistente de instalación de Python,
que es realmente fácil de usar. Simplemente acepte la configuración
predeterminada, espere hasta que finalice la instalación y haya terminado.
Instalación de Macintosh
Macs recientes vienen con Python instalado, pero puede estar desactualizado
varios años. Consulte http://www.python.org/download/mac/ para obtener
instrucciones sobre cómo obtener la versión actual junto con herramientas
adicionales para apoyar el desarrollo en Mac. Para Mac OS anteriores a Mac
OS X 10.3 (lanzado en 2003), MacPython está disponible.
Jack Jansen lo mantiene y puede tener acceso completo a toda la
documentación en su sitio
web: http://www.cwi.nl/~jack/macpython.html . Puede encontrar detalles
completos de instalación para la instalación de Mac OS.
Configurar RUTA
Los programas y otros archivos ejecutables pueden estar en muchos
directorios, por lo que los sistemas operativos proporcionan una ruta de
búsqueda que enumera los directorios que el sistema operativo busca
ejecutables.
La ruta se almacena en una variable de entorno, que es una cadena con
nombre mantenida por el sistema operativo. Esta variable contiene
información disponible para el shell de comandos y otros programas.
La variable de ruta se denomina RUTA en Unix o Ruta en Windows (Unix
distingue entre mayúsculas y minúsculas; Windows no).
En Mac OS, el instalador maneja los detalles de la ruta. Para invocar al
intérprete de Python desde cualquier directorio en particular, debe agregar el
directorio de Python a su ruta.
Establecer ruta en Unix / Linux
Para agregar el directorio de Python a la ruta de una sesión en particular en
Unix:
En el shell csh , escriba setenv PATH "$ PATH: / usr / local / bin / python" y
presione Entrar.
En el shell bash (Linux) , escriba export PATH = "$ PATH: / usr / local / bin /
python" y presione Entrar.
En el shell sh o ksh , escriba PATH = "$ PATH: / usr / local / bin / python" y
presione Entrar.
Nota : / usr / local / bin / python es la ruta del directorio de Python
1
RUTA DEL PITÓN
Tiene un papel similar al de la RUTA. Esta variable le dice al intérprete de Python
dónde ubicar los archivos del módulo importados a un programa. Debe incluir el
directorio de la biblioteca fuente de Python y los directorios que contienen el código
fuente de Python. PYTHONPATH a veces está preestablecido por el instalador de
Python.
2
PYTHONSTARTUP
Contiene la ruta de un archivo de inicialización que contiene el código fuente de
Python. Se ejecuta cada vez que inicia el intérprete. Se nombra como .pythonrc.py en
Unix y contiene comandos que cargan utilidades o modifican PYTHONPATH.
3
PYTHONCASEOK
Se usa en Windows para indicar a Python que busque la primera coincidencia entre
mayúsculas y minúsculas en una declaración de importación. Establezca esta variable
en cualquier valor para activarla.
44
PYTHONHOME
Es una ruta de búsqueda de módulo alternativa. Por lo general, está incrustado en los
directorios PYTHONSTARTUP o PYTHONPATH para facilitar el cambio de bibliotecas
de módulos.
Corriendo Python
Hay tres formas diferentes de iniciar Python:
Intérprete interactivo
Puede iniciar Python desde Unix, DOS o cualquier otro sistema que le
proporcione un intérprete de línea de comandos o una ventana de shell.
Ingrese python en la línea de comando.
Comience a codificar de inmediato en el intérprete interactivo.
$python # Unix/Linux
or
python% # Unix/Linux
or
C:> python # Windows/DOS
Aquí está la lista de todas las opciones de línea de comando disponibles:
1
-re
Proporciona resultados de depuración.
2
-O
Genera bytecode optimizado (que resulta en archivos .pyo).
3
-S
No ejecute el sitio de importación para buscar rutas de Python en el inicio.
44
-v
salida detallada (seguimiento detallado en las declaraciones de importación).
55
-X
deshabilitar excepciones incorporadas basadas en clases (solo use cadenas); obsoleto
a partir de la versión 1.6.
66
-c cmd
ejecutar el script Python enviado como cadena cmd
77
archivo
ejecutar script de Python desde un archivo dado
or
or
Identificadores de Python
Un identificador de Python es un nombre utilizado para identificar una variable,
función, clase, módulo u otro objeto. Un identificador comienza con una letra A
a Z o una a z o un guión bajo (_) seguido de cero o más letras, guiones bajos
y dígitos (0 a 9).
Python no permite caracteres de puntuación como @, $ y% dentro de los
identificadores. Python es un lenguaje de programación sensible a mayúsculas
y minúsculas. Por lo tanto, Manpower y manpower son dos identificadores
diferentes en Python.
Aquí hay convenciones de nombres para identificadores de Python:
Los nombres de clase comienzan con una letra mayúscula. Todos los demás
identificadores comienzan con una letra minúscula.
Iniciar un identificador con un solo guión bajo indica que el identificador es privado.
Comenzar un identificador con dos guiones bajos indica un identificador
fuertemente privado.
Si el identificador también termina con dos guiones bajos, el identificador es un
nombre especial definido por el idioma.
assert finally or
def if return
elif in while
else is with
import sys
try:
# open file stream
file = open(file_name, "w")
except IOError:
print "There was an error writing to", file_name
sys.exit()
print "Enter '", file_finish,
print "' When finished"
while file_text != file_finish:
file_text = raw_input("Enter text: ")
if file_text == file_finish:
# close the file
file.close
break
file.write(file_text)
file.write("\n")
file.close()
file_name = raw_input("Enter filename: ")
if len(file_name) == 0:
print "Next time please enter something"
sys.exit()
try:
file = open(file_name, "r")
except IOError:
print "There was an error reading file"
sys.exit()
file_text = file.read()
file.close()
print file_text
Cita en Python
Python acepta comillas simples ('), dobles (") y triples (' '' o" "") para denotar
literales de cadena, siempre que el mismo tipo de comilla comience y termine
la cadena.
Las comillas triples se utilizan para abarcar la cadena a través de varias
líneas. Por ejemplo, todo lo siguiente es legal:
word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""
Comentarios en Python
Un signo hash (#) que no está dentro de un literal de cadena comienza un
comentario. Todos los caracteres después del # y hasta el final de la línea
física son parte del comentario y el intérprete de Python los ignora.
Demo en vivo
#!/usr/bin/python
# First comment
print "Hello, Python!" # second comment
Esto produce el siguiente resultado:
Hello, Python!
Puede escribir un comentario en la misma línea después de una declaración o
expresión:
name = "Madisetti" # This is again comment
Puede comentar varias líneas de la siguiente manera:
# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.
Esperando al usuario
La siguiente línea del programa muestra el mensaje, la declaración que dice
"Presione la tecla Intro para salir", y espera a que el usuario tome medidas:
#!/usr/bin/python
[ etc. ]
También puede programar su script de tal manera que acepte varias
opciones. Command Line Arguments es un tema avanzado y debe estudiarse
un poco más tarde una vez que haya revisado el resto de los conceptos de
Python.
Python - Tipos de variables
Las variables no son más que ubicaciones de memoria reservadas para
almacenar valores. Esto significa que cuando crea una variable, reserva algo
de espacio en la memoria.
Según el tipo de datos de una variable, el intérprete asigna memoria y decide
qué se puede almacenar en la memoria reservada. Por lo tanto, al asignar
diferentes tipos de datos a las variables, puede almacenar enteros, decimales
o caracteres en estas variables.
print counter
print miles
print name
Aquí, 100, 1000.0 y "John" son los valores asignados
a las variables contador , millas y nombre , respectivamente. Esto produce el
siguiente resultado:
100
1000.0
John
Asignación Múltiple
Python le permite asignar un solo valor a varias variables
simultáneamente. Por ejemplo
a = b = c = 1
Aquí, se crea un objeto entero con el valor 1, y las tres variables se asignan a
la misma ubicación de memoria. También puede asignar múltiples objetos a
múltiples variables. Por ejemplo
a,b,c = 1,2,"john"
Aquí, dos objetos enteros con valores 1 y 2 se asignan a las variables a y b
respectivamente, y un objeto de cadena con el valor "john" se asigna a la
variable c.
Números
Cuerda
Lista
Tupla
Diccionario
Números de Python
Los tipos de datos numéricos almacenan valores numéricos. Los objetos
numéricos se crean cuando les asigna un valor. Por ejemplo
var1 = 1
var2 = 10
También puede eliminar la referencia a un objeto numérico utilizando la
instrucción del. La sintaxis de la declaración del es -
del var1[,var2[,var3[....,varN]]]]
Puede eliminar un solo objeto o varios objetos utilizando la instrucción del. Por
ejemplo
del var
del var_a, var_b
Python admite cuatro tipos numéricos diferentes:
Python le permite usar una l minúscula con largo, pero se recomienda que use
solo una L mayúscula para evitar confusión con el número 1. Python muestra
enteros largos con una L mayúscula.
Un número complejo consiste en un par ordenado de números de coma flotante
reales denotados por x + yj, donde x e y son los números reales y j es la unidad
imaginaria.
Cadenas o String
Las cadenas en Python se identifican como un conjunto contiguo de
caracteres representados en las comillas. Python permite pares de comillas
simples o dobles. Se pueden tomar subconjuntos de cadenas usando el
operador de división ([] y [:]) con índices que comienzan en 0 al comienzo de
la cadena y van desde -1 al final.
El signo más (+) es el operador de concatenación de cadenas y el asterisco (*)
es el operador de repetición. Por ejemplo
Demo en vivo
#!/usr/bin/python
Listas de Python
Las listas son los tipos de datos compuestos más versátiles de Python. Una
lista contiene elementos separados por comas y encerrados entre corchetes
([]). Hasta cierto punto, las listas son similares a las matrices en C. Una
diferencia entre ellas es que todos los elementos que pertenecen a una lista
pueden ser de diferentes tipos de datos.
Se puede acceder a los valores almacenados en una lista utilizando el
operador de división ([] y [:]) con índices que comienzan en 0 al comienzo de
la lista y se abren camino hasta el final -1. El signo más (+) es el operador de
concatenación de lista, y el asterisco (*) es el operador de repetición. Por
ejemplo
Demo en vivo
#!/usr/bin/python
Tuplas
Una tupla es otro tipo de datos de secuencia que es similar a la lista. Una tupla
consiste en una serie de valores separados por comas. Sin embargo, a
diferencia de las listas, las tuplas están encerradas entre paréntesis.
Las principales diferencias entre las listas y las tuplas son: las listas están
entre corchetes ([]) y sus elementos y tamaño pueden cambiarse, mientras
que las tuplas están entre paréntesis (()) y no pueden actualizarse. Las tuplas
pueden considerarse como listas de solo lectura . Por ejemplo
Demo en vivo
#!/usr/bin/python
Diccionario Python
Los diccionarios de Python son un tipo de tabla hash. Funcionan como
matrices asociativas o hashes que se encuentran en Perl y consisten en pares
clave-valor. Una clave de diccionario puede ser casi cualquier tipo de Python,
pero generalmente son números o cadenas. Los valores, por otro lado,
pueden ser cualquier objeto arbitrario de Python.
Los diccionarios están encerrados entre llaves ({}) y los valores se pueden
asignar y acceder usando llaves cuadradas ([]). Por ejemplo
Demo en vivo
#!/usr/bin/python
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
1
int (x [, base])
Convierte x en un entero. base especifica la base si x es una cadena.
2
largo (x [, base])
Convierte x en un entero largo. base especifica la base si x es una cadena.
3
flotador (x)
Convierte x en un número de coma flotante.
44
complejo (real [, imag])
Crea un número complejo.
55
str (x)
Convierte el objeto x en una representación de cadena.
66
repr (x)
Convierte el objeto x en una cadena de expresión.
77
eval (str)
Evalúa una cadena y devuelve un objeto.
8
tupla (s)
Convierte s en una tupla.
99
liza)
Convierte s en una lista.
10
conjunto (s)
Convierte s en un conjunto.
11
dict (d)
Crea un diccionario. d debe ser una secuencia de tuplas (clave, valor).
12
conjuntos congelados
Convierte s en un conjunto congelado.
13
chr (x)
Convierte un entero en un carácter.
14
unichr (x)
Convierte un entero en un carácter Unicode.
15
ord (x)
Convierte un solo carácter a su valor entero.
dieciséis
hex (x)
Convierte un entero en una cadena hexadecimal.
17
oct (x)
Convierte un entero en una cadena octal.
Python - Operadores básicos
Los operadores son las construcciones que pueden manipular el valor de los
operandos.
Considere la expresión 4 + 5 = 9. Aquí, 4 y 5 se llaman operandos y + se llama
operador.
Tipos de operador
El lenguaje Python admite los siguientes tipos de operadores.
Operadores aritméticos
Operadores de comparación (relacionales)
Operadores de Asignación
Operadores logicos
Operadores bit a bit
Operadores de membresía
Operadores de identidad
Echemos un vistazo a todos los operadores uno por uno.
> Si el valor del operando izquierdo es mayor que el valor del (a> b) no
operando derecho, entonces la condición se vuelve verdadera. es cierto.
< Si el valor del operando izquierdo es menor que el valor del (a <b) es
operando derecho, entonces la condición se vuelve verdadera. cierto.
>= Si el valor del operando izquierdo es mayor o igual que el valor del (a> = b) no
operando derecho, entonces la condición se vuelve verdadera. es cierto.
<= Si el valor del operando izquierdo es menor o igual que el valor del (a <= b) es
operando derecho, entonces la condición se vuelve verdadera. cierto.
~ Complemento de (~ a) = -61
binarios (significa
Es unario y tiene el efecto de 'voltear' bits. 1100 0011
en forma de
complemento
a 2 debido a
un número
binario con
signo.
No Operador y Descripción
Señor.
1
** **
Exponenciación (elevar al poder)
2
~+-
Complemento, unario más y menos (los nombres de método para los dos
últimos son + @ y - @)
3
* /% //
División de multiplicación, división, módulo y piso
44
+-
Adición y sustracción
55
>> <<
Desplazamiento bit a la derecha e izquierda
66
Y
Bitwise 'Y'
77
^|
Bitwise exclusivo 'OR' y regular 'OR'
8
<= <>> =
Operadores de comparación
99
<> ==! =
Operadores de igualdad
10
=% = / = // = - = + = * = ** =
Operadores de Asignación
11
no lo es
Operadores de identidad
12
en no en
Operadores de membresía
13
no o y
Operadores logicos
Python - Toma de decisiones
La toma de decisiones es la anticipación de las condiciones que ocurren
mientras se ejecuta el programa y se especifican las acciones tomadas de
acuerdo con las condiciones.
Las estructuras de decisión evalúan múltiples expresiones que producen
VERDADERO o FALSO como resultado. Debe determinar qué acción tomar y
qué declaraciones ejecutar si el resultado es VERDADERO o FALSO de lo
contrario.
A continuación se presenta la forma general de una estructura de toma de
decisiones típica que se encuentra en la mayoría de los lenguajes de
programación:
No Declaración y descripción
Señor.
1 si declaraciones
3 instrucciones if anidadas
Puede usar una declaración if o else if dentro de otra declaración if o else if (s).
var = 100
if ( var == 100 ) : print "Value of expression is 100"
print "Good bye!"
Cuando se ejecuta el código anterior, produce el siguiente resultado:
Value of expression is 100
Good bye!
Python - Bucles
En general, las instrucciones se ejecutan secuencialmente: la primera
instrucción de una función se ejecuta primero, seguida de la segunda, y así
sucesivamente. Puede haber una situación en la que necesite ejecutar un
bloque de código varias veces.
Los lenguajes de programación proporcionan diversas estructuras de control
que permiten rutas de ejecución más complicadas.
Una declaración de bucle nos permite ejecutar una declaración o grupo de
declaraciones varias veces. El siguiente diagrama ilustra una declaración de
bucle:
El lenguaje de programación Python proporciona los siguientes tipos de bucles
para manejar los requisitos de bucle.
1 mientras bucle
2 en bucle
Ejecuta una secuencia de declaraciones varias veces y abrevia el código que
administra la variable de bucle.
3 bucles anidados
Puede usar uno o más bucles dentro de otro mientras, para o hacer ... while loop.
1 declaración de ruptura
2 continuar declaración
Hace que el bucle omita el resto de su cuerpo e inmediatamente vuelva a probar
su condición antes de reiterar.
3 declaración de aprobación
La sentencia pass en Python se usa cuando se requiere una sentencia
sintácticamente pero no desea que se ejecute ningún comando o código.
Python - Números
Los tipos de datos numéricos almacenan valores numéricos. Son tipos de
datos inmutables, lo que significa que cambiar el valor de un tipo de datos
numérico da como resultado un objeto recientemente asignado.
Los objetos numéricos se crean cuando les asigna un valor. Por ejemplo
var1 = 1
var2 = 10
También puede eliminar la referencia a un objeto numérico utilizando
la instrucción del . La sintaxis de la declaración del es -
del var1[,var2[,var3[....,varN]]]]
Puede eliminar un solo objeto o varios objetos utilizando
la instrucción del . Por ejemplo
del var
del var_a, var_b
Python admite cuatro tipos numéricos diferentes:
int (enteros con signo) : a menudo se los llama enteros o enteros, son números
enteros positivos o negativos sin punto decimal.
long (enteros largos) : también llamados largos, son enteros de tamaño ilimitado,
escritos como enteros y seguidos de una L mayúscula o minúscula.
flotante (valores reales de coma flotante) : también llamados flotantes,
representan números reales y se escriben con un punto decimal que divide el
número entero y las partes fraccionarias. Los flotadores también pueden estar en
notación científica, con E o e indicando la potencia de 10 (2.5e2 = 2.5 x 10 2 =
250).
complejo (números complejos) : son de la forma a + bJ, donde a y b son
flotantes y J (o j) representa la raíz cuadrada de -1 (que es un número
imaginario). La parte real del número es a, y la parte imaginaria es b. Los
números complejos no se usan mucho en la programación de Python.
Ejemplos
Python le permite usar una L minúscula con largo, pero se recomienda que use
solo una L mayúscula para evitar confusiones con el número 1. Python muestra
enteros largos con una L mayúscula.
Un número complejo consiste en un par ordenado de números de coma flotante
reales denotados por a + bj, donde a es la parte real y b es la parte imaginaria del
número complejo.
Funciones matematicas
Python incluye las siguientes funciones que realizan cálculos matemáticos.
1 abs (x)
2 techo (x)
El techo de x: el entero más pequeño no menos que x
3 cmp (x, y)
-1 si x <y, 0 si x == y, o 1 si x> y
44 exp (x)
El exponencial de x: e x
55 fabs (x)
El valor absoluto de x.
66 piso (x)
El piso de x: el entero más grande no mayor que x
77 log (x)
El logaritmo natural de x, para x> 0
8 log10 (x)
El logaritmo de base 10 de x para x> 0.
11 modf (x)
Las partes fraccionarias y enteras de x en una tupla de dos elementos. Ambas
partes tienen el mismo signo que x. La parte entera se devuelve como flotante.
12 pow (x, y)
El valor de x ** y.
13 redondo (x [, n])
x redondeado a n dígitos desde el punto decimal. Python se redondea desde cero
como un desempate: la ronda (0.5) es 1.0 y la ronda (-0.5) es -1.0.
14 sqrt (x)
La raíz cuadrada de x para x> 0
No Función descriptiva
Señor.
1 elección (seq)
3 aleatorio()
Un flotador aleatorio r, tal que 0 es menor o igual que r y r es menor que 1
44 semilla ([x])
Establece el valor de inicio entero usado para generar números aleatorios. Llame a
esta función antes de llamar a cualquier otra función de módulo aleatorio. Devuelve
ninguno.
55 barajar (lst)
Aleatoriza los elementos de una lista en su lugar. Devuelve ninguno.
66 uniforme (x, y)
Un flotador aleatorio r, tal que x es menor o igual que r y r es menor que y
Funciones trigonométricas
Python incluye las siguientes funciones que realizan cálculos trigonométricos.
No Función descriptiva
Señor.
1 acos (x)
2 asin (x)
Devuelve el arco seno de x, en radianes.
3 atan (x)
Devuelve el arco tangente de x, en radianes.
44 atan2 (y, x)
Devuelve atan (y / x), en radianes.
55 cos (x)
Devuelve el coseno de x radianes.
66 hipot (x, y)
Devuelve la norma euclidiana, sqrt (x * x + y * y).
77 sin (x)
Devuelve el seno de x radianes.
8 bronceado (x)
Devuelve la tangente de x radianes.
99 grados (x)
Convierte el ángulo x de radianes a grados.
10 radianes (x)
Convierte el ángulo x de grados a radianes.
Constantes Matemáticas
El módulo también define dos constantes matemáticas:
No Constantes y Descripción
Señor.
1
Pi
La constante matemática pi.
2
mi
La constante matemática e.
Python - Cadenas
Las cadenas se encuentran entre los tipos más populares en
Python. Podemos crearlos simplemente encerrando caracteres entre
comillas. Python trata las comillas simples igual que las comillas dobles. Crear
cadenas es tan simple como asignar un valor a una variable. Por ejemplo
var1 = 'Hello World!'
var2 = "Python Programming"
Personajes de escape
La siguiente tabla es una lista de caracteres de escape o no imprimibles que
se pueden representar con notación de barra invertida.
Un personaje de escape se interpreta; en cadenas de comillas simples y
comillas dobles.
\ cx Control-x
\ Cx Control-x
\F 0x0c Formfeed
\ M- \ Cx Meta-Control-x
\s 0x20 Espacio
\t 0x09 Lengüeta
\X Personaje x
[:] Range Slice - Da los caracteres del rango dado a [1: 4] dará
ell
r/R Cadena sin formato: suprime el significado real de los caracteres imprime r '\ n'
de escape. La sintaxis para las cadenas sin formato es imprime \ ny
exactamente la misma que para las cadenas normales, con la imprime R '\
excepción del operador de cadena sin formato, la letra "r", que n'impresiones
precede a las comillas. La "r" puede ser minúscula (r) o \n
mayúscula (R) y debe colocarse inmediatamente antes de la
primera comilla.
%C personaje
%o entero octal
Símbolo Funcionalidad
- justificación izquierda
+ muestra el letrero
Cotizaciones triples
Las citas triples de Python vienen al rescate al permitir que las cadenas
abarquen varias líneas, incluidas NEWLINE, TAB y cualquier otro carácter
especial.
La sintaxis para las comillas triples consta de tres comillas simples o
dobles consecutivas .
Demo en vivo
#!/usr/bin/python
print r'C:\\nowhere'
Cuando se ejecuta el código anterior, produce el siguiente resultado:
C:\\nowhere
Cadena Unicode
Las cadenas normales en Python se almacenan internamente como ASCII de
8 bits, mientras que las cadenas Unicode se almacenan como Unicode de 16
bits. Esto permite un conjunto más variado de caracteres, incluidos caracteres
especiales de la mayoría de los idiomas del mundo. Restringiré mi tratamiento
de cadenas Unicode a lo siguiente:
Demo en vivo
#!/usr/bin/python
1 capitalizar()
77 expandtabs (tabsize = 8)
Expande pestañas en cadena a múltiples espacios; el valor predeterminado es 8
espacios por pestaña si no se proporciona el tamaño de la pestaña.
10 isalnum ()
Devuelve verdadero si la cadena tiene al menos 1 carácter y, de lo contrario,
todos los caracteres son alfanuméricos y falsos.
11 isalpha ()
Devuelve verdadero si la cadena tiene al menos 1 carácter y, de lo contrario,
todos los caracteres son alfabéticos y falsos.
12 isdigit ()
Devuelve verdadero si la cadena contiene solo dígitos y falso en caso contrario.
13 es bajo()
Devuelve verdadero si la cadena tiene al menos 1 carácter en mayúscula y, de lo
contrario, todos los caracteres en mayúscula están en minúscula y falso.
14 isnumeric ()
Devuelve verdadero si una cadena unicode contiene solo caracteres numéricos y
falso en caso contrario.
15 isspace ()
Devuelve verdadero si la cadena contiene solo caracteres de espacio en blanco y
falso en caso contrario.
dieciséis istitle ()
Devuelve verdadero si la cadena está correctamente "encasillada" y falso en caso
contrario
17 isupper ()
Devuelve verdadero si la cadena tiene al menos un carácter en mayúscula y, de
lo contrario, todos los caracteres en mayúscula están en mayúscula y falso.
18 unirse (seq)
Fusiona (concatena) las representaciones de cadena de elementos en secuencia
seq en una cadena, con una cadena de separación.
19 len (cadena)
Devuelve la longitud de la cadena.
21 inferior()
Convierte todas las letras mayúsculas en cadena a minúsculas.
22 lstrip ()
Elimina todos los espacios en blanco iniciales en la cadena.
23 maketrans ()
Devuelve una tabla de traducción para usar en la función de traducción.
24 max (str)
Devuelve el carácter alfabético máximo de la cadena str.
25 min (str)
Devuelve el carácter alfabético mínimo de la cadena str.
30 rstrip ()
Elimina todo el espacio en blanco al final de la cadena.
34 tira ([caracteres])
Realiza tanto lstrip () como rstrip () en cadena.
35 swapcase ()
Invierte mayúsculas y minúsculas para todas las letras en cadena.
36 título()
Devuelve la versión "stringcased" de la cadena, es decir, todas las palabras
comienzan con mayúsculas y el resto son minúsculas.
39 zfill (ancho)
Devuelve la cadena original rellena con ceros a la izquierda a un total de
caracteres de ancho; destinado a números, zfill () retiene cualquier signo dado
(menos un cero).
40 isdecimal ()
Devuelve verdadero si una cadena unicode contiene solo caracteres decimales y
falso en caso contrario.
Python - Listas
La estructura de datos más básica en Python es la secuencia . A cada
elemento de una secuencia se le asigna un número: su posición o índice. El
primer índice es cero, el segundo índice es uno, y así sucesivamente.
Python tiene seis tipos de secuencias incorporadas, pero las más comunes
son listas y tuplas, que veríamos en este tutorial.
Hay ciertas cosas que puede hacer con todos los tipos de secuencia. Estas
operaciones incluyen indexación, segmentación, adición, multiplicación y
verificación de membresía. Además, Python tiene funciones integradas para
encontrar la longitud de una secuencia y para encontrar sus elementos más
grandes y más pequeños.
Listas de Python
La lista es un tipo de datos más versátil disponible en Python que se puede
escribir como una lista de valores (elementos) separados por comas entre
corchetes. Lo importante de una lista es que los elementos de una lista no
necesitan ser del mismo tipo.
Crear una lista es tan simple como poner diferentes valores separados por
comas entre corchetes. Por ejemplo
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"]
Al igual que los índices de cadena, los índices de lista comienzan en 0, y las
listas se pueden dividir, concatenar, etc.
Actualización de listas
Puede actualizar elementos simples o múltiples de listas dando el segmento
en el lado izquierdo del operador de asignación, y puede agregar elementos a
una lista con el método append (). Por ejemplo
Demo en vivo
#!/usr/bin/python
2 len (lista)
Da la longitud total de la lista.
3 max (lista)
Devuelve el artículo de la lista con el valor máximo.
44 min (lista)
Devuelve el artículo de la lista con el valor mínimo.
55 lista (seq)
Convierte una tupla en lista.
1 list.append (obj)
2 list.count (obj)
Devuelve el recuento de cuántas veces se produce obj en la lista
3 list.extend (seq)
Agrega los contenidos de seq a la lista
44 list.index (obj)
Devuelve el índice más bajo de la lista en el que aparece obj
77 list.remove (obj)
Elimina el objeto obj de la lista
8 list.reverse ()
Invierte objetos de la lista en su lugar
99 list.sort ([func])
Ordena los objetos de la lista, usa la función de comparación si se proporciona
Python - Tuplas
Una tupla es una secuencia de objetos Python inmutables. Las tuplas son
secuencias, al igual que las listas. Las diferencias entre las tuplas y las listas
son que las tuplas no se pueden cambiar a diferencia de las listas y las tuplas
usan paréntesis, mientras que las listas usan corchetes.
Crear una tupla es tan simple como poner diferentes valores separados por
comas. Opcionalmente, también puede poner estos valores separados por
comas entre paréntesis. Por ejemplo
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";
La tupla vacía se escribe como dos paréntesis que no contienen nada:
tup1 = ();
Para escribir una tupla que contenga un único valor, debe incluir una coma,
aunque solo haya un valor:
tup1 = (50,);
Al igual que los índices de cadena, los índices de tupla comienzan en 0, y se
pueden dividir, concatenar, etc.
Actualización de tuplas
Las tuplas son inmutables, lo que significa que no puede actualizar o cambiar
los valores de los elementos de tupla. Puede tomar porciones de tuplas
existentes para crear nuevas tuplas como lo demuestra el siguiente ejemplo:
Demo en vivo
#!/usr/bin/python
2 len (tupla)
Da la longitud total de la tupla.
3 max (tupla)
Devuelve el artículo de la tupla con el valor máximo.
44 min (tupla)
Devuelve el artículo de la tupla con el valor mínimo.
55 tupla (seq)
Convierte una lista en tupla.
Python - Diccionario
Cada tecla está separada de su valor por dos puntos (:), los elementos están
separados por comas y todo está encerrado entre llaves. Un diccionario vacío
sin ningún elemento se escribe con solo dos llaves, así: {}.
Las claves son únicas dentro de un diccionario, mientras que los valores
pueden no serlo. Los valores de un diccionario pueden ser de cualquier tipo,
pero las claves deben ser de un tipo de datos inmutable, como cadenas,
números o tuplas.
Diccionario de actualización
Puede actualizar un diccionario agregando una nueva entrada o un par clave-
valor, modificando una entrada existente o eliminando una entrada existente
como se muestra a continuación en el ejemplo simple:
Demo en vivo
#!/usr/bin/python
2 len (dict)
Da la longitud total del diccionario. Esto sería igual al número de elementos en el
diccionario.
3 str (dict)
Produce una representación de cadena imprimible de un diccionario
44 tipo (variable)
Devuelve el tipo de la variable pasada. Si la variable pasada es diccionario,
entonces devolvería un tipo de diccionario.
1 dict.clear ()
2 dict.copy ()
Devuelve una copia superficial de diccionario dict
3 dict.fromkeys ()
Cree un nuevo diccionario con claves de seq y valores establecidos en value .
55 dict.has_key (clave)
Devuelve verdadero si la clave en el diccionario dict , falso de lo contrario
66 dict.items ()
Devuelve una lista de pares de tuplas de dict (clave, valor)
77 dict.keys ()
Devuelve la lista de claves del diccionario dict
99 dict.update (dict2)
Agrega los pares clave-valor del diccionario dict2 a dict
10 dict.values ()
Devuelve la lista de los valores del diccionario dict
¿Qué es Tick?
Los intervalos de tiempo son números de coma flotante en unidades de
segundos. Los instantes particulares en el tiempo se expresan en segundos
desde las 12:00 a.m., 1 de enero de 1970 (época).
Hay un módulo de tiempo popular disponible en Python que proporciona
funciones para trabajar con tiempos y para convertir entre
representaciones. La función time.time () devuelve la hora actual del sistema
en ticks desde las 12:00 a.m., 1 de enero de 1970 (época).
Ejemplo
Demo en vivo
#!/usr/bin/python
import time; # This is required to include time module.
ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:",
ticks
Esto produciría un resultado algo así:
Number of ticks since 12:00am, January 1, 1970: 7186862.73399
La aritmética de fechas es fácil de hacer con las garrapatas. Sin embargo, las
fechas anteriores a la época no se pueden representar de esta forma. Las
fechas en el futuro lejano tampoco se pueden representar de esta manera: el
punto de corte es en algún momento en 2038 para UNIX y Windows.
¿Qué es TimeTuple?
Muchas de las funciones de tiempo de Python manejan el tiempo como una
tupla de 9 números, como se muestra a continuación:
1 Mes 1 a 12
2 Día 1 a 31
3 Hora 0 a 23
44 Minuto 0 a 59
00 tm_year 2008
1 tm_mon 1 a 12
2 tm_mday 1 a 31
3 tm_hour 0 a 23
44 tm_min 0 a 59
66 tm_wday 0 a 6 (0 es lunes)
localtime = time.localtime(time.time())
print "Local current time :", localtime
Esto produciría el siguiente resultado, que podría formatearse en cualquier
otra forma presentable:
Local current time : time.struct_time(tm_year=2013, tm_mon=7,
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2,
tm_yday=198, tm_isdst=0)
cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal
El módulo de tiempo
Hay un módulo de tiempo popular disponible en Python que proporciona
funciones para trabajar con tiempos y para convertir entre
representaciones. Aquí está la lista de todos los métodos disponibles:
1 time.altzone
2 time.asctime ([tupletime])
Acepta una tupla de tiempo y devuelve una cadena legible de 24 caracteres como
'Mar 11 de diciembre 18:07:14 2008'.
3 time.clock ()
Devuelve el tiempo de CPU actual como un número de segundos de punto
flotante. Para medir los costos computacionales de diferentes enfoques, el valor de
time.clock es más útil que el de time.time ().
44 time.ctime ([segundos])
Como asctime (localtime (secs)) y sin argumentos es como asctime ()
55 time.gmtime ([segundos])
Acepta un instante expresado en segundos desde la época y devuelve una tupla de
tiempo t con la hora UTC. Nota: t.tm_isdst siempre es 0
66 time.localtime ([segundos])
Acepta un instante expresado en segundos desde la época y devuelve una tupla de
tiempo t con la hora local (t.tm_isdst es 0 o 1, dependiendo de si DST se aplica a
segundos instantáneos según las reglas locales).
77 time.mktime (tupletime)
Acepta un instante expresado como una tupla de tiempo en la hora local y devuelve
un valor de punto flotante con el instante expresado en segundos desde la época.
8 time.sleep (segundos)
Suspende el hilo de llamada durante segundos segundos.
11 tiempo tiempo( )
Devuelve el instante de tiempo actual, un número de segundos de coma flotante
desde la época.
12 time.tzset ()
Restablece las reglas de conversión de tiempo utilizadas por las rutinas de la
biblioteca. La variable de entorno TZ especifica cómo se hace esto.
1
time.timezone
El atributo time.timezone es el desplazamiento en segundos de la zona horaria
local (sin DST) desde UTC (> 0 en las Américas; <= 0 en la mayoría de Europa,
Asia, África).
2
time.tzname
El atributo time.tzname es un par de cadenas dependientes de la configuración
regional, que son los nombres de la zona horaria local sin y con DST,
respectivamente.
El módulo de calendario
El módulo de calendario proporciona funciones relacionadas con el calendario,
incluidas las funciones para imprimir un calendario de texto para un mes o año
determinado.
Por defecto, el calendario toma el lunes como el primer día de la semana y el
domingo como el último. Para cambiar esto, llame a la función
calendar.setfirstweekday ().
Aquí hay una lista de funciones disponibles con el módulo de calendario :
1
calendar.calendar (año, w = 2, l = 1, c = 6)
Devuelve una cadena multilínea con un calendario para el año año formateado en
tres columnas separadas por espacios en c. w es el ancho en caracteres de cada
fecha; cada línea tiene una longitud de 21 * w + 18 + 2 * c. l es el número de líneas
para cada semana.
2
calendar.firstweekday ()
Devuelve la configuración actual para el día de la semana que comienza cada
semana. Por defecto, cuando el calendario se importa por primera vez, es 0, es
decir, lunes.
3
calendar.isleap (año)
Devuelve True si el año es bisiesto; de lo contrario, falso.
44
calendar.leapdays (y1, y2)
Devuelve el número total de días bisiestos en los años dentro del rango (y1, y2).
55
calendar.month (año, mes, w = 2, l = 1)
Devuelve una cadena multilínea con un calendario para mes mes del año año, una
línea por semana más dos líneas de encabezado. w es el ancho en caracteres de
cada fecha; cada línea tiene una longitud de 7 * w + 6. l es el número de líneas para
cada semana.
66
calendar.monthcalendar (año, mes)
Devuelve una lista de listas de entradas. Cada sublista denota una semana. Los
días fuera del mes mes del año año se establecen en 0; los días dentro del mes se
establecen en su día del mes, 1 y superior.
77
calendar.monthrange (año, mes)
Devuelve dos enteros. El primero es el código del día de la semana para el primer
día del mes mes en el año año; el segundo es el número de días en el mes. Los
códigos de lunes a viernes son de 0 (lunes) a 6 (domingo); los números de mes son
del 1 al 12.
8
calendar.prcal (año, w = 2, l = 1, c = 6)
Como imprimir calendar.calendar (año, w, l, c).
99
calendar.prmonth (año, mes, w = 2, l = 1)
Como imprimir calendar.month (año, mes, w, l).
10
calendar.setfirstweekday (día de la semana)
Establece el primer día de cada semana en el código del día de la semana día de la
semana. Los códigos de lunes a viernes son de 0 (lunes) a 6 (domingo).
11
calendar.timegm (tupletime)
El inverso de time.gmtime: acepta un instante de tiempo en forma de tupla de
tiempo y devuelve el mismo instante como un número de segundos de punto
flotante desde la época.
12
calendar.weekday (año, mes, día)
Devuelve el código del día de la semana para la fecha dada. Los códigos de lunes
a viernes son de 0 (lunes) a 6 (domingo); los números de mes son 1 (enero) a 12
(diciembre).
Otros módulos y funciones
Si está interesado, aquí encontrará una lista de otros módulos y funciones
importantes para jugar con fecha y hora en Python:
El módulo de fecha y hora
El módulo pytz
El módulo dateutil
Python - Funciones
Una función es un bloque de código organizado y reutilizable que se utiliza
para realizar una única acción relacionada. Las funciones proporcionan una
mejor modularidad para su aplicación y un alto grado de reutilización de
código.
Como ya sabe, Python le ofrece muchas funciones integradas como print (),
etc., pero también puede crear sus propias funciones. Estas funciones se
denominan funciones definidas por el usuario.
Sintaxis
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]
De manera predeterminada, los parámetros tienen un comportamiento
posicional y debe informarlos en el mismo orden en que se definieron.
Ejemplo
La siguiente función toma una cadena como parámetro de entrada y la
imprime en la pantalla estándar.
def printme( str ):
"This prints a passed string into this function"
print str
return
Argumentos de funciones
Puede llamar a una función utilizando los siguientes tipos de argumentos
formales:
Argumentos requeridos
Argumentos de palabras clave
Argumentos predeterminados
Argumentos de longitud variable
Argumentos requeridos
Los argumentos obligatorios son los argumentos pasados a una función en el
orden posicional correcto. Aquí, el número de argumentos en la llamada a la
función debe coincidir exactamente con la definición de la función.
Para llamar a la función printme () , definitivamente debe pasar un argumento,
de lo contrario, se produce un error de sintaxis de la siguiente manera:
Demo en vivo
#!/usr/bin/python
Argumentos predeterminados
Un argumento predeterminado es un argumento que asume un valor
predeterminado si no se proporciona un valor en la llamada de función para
ese argumento. El siguiente ejemplo da una idea sobre los argumentos
predeterminados, imprime la edad predeterminada si no se pasa:
Demo en vivo
#!/usr/bin/python
La declaración de devolución
La sentencia return [expresión] sale de una función, opcionalmente devuelve
una expresión a la persona que llama. Una declaración de retorno sin
argumentos es lo mismo que return None.
Todos los ejemplos anteriores no devuelven ningún valor. Puede devolver un
valor de una función de la siguiente manera:
Demo en vivo
#!/usr/bin/python
Variables globales
Variables locales
Ejemplo
El código de Python para un módulo llamado aname normalmente reside en
un archivo llamado aname.py . Aquí hay un ejemplo de un módulo simple,
support.py
def print_func( par ):
print "Hello : ", par
return
La declaración de importación
Puede usar cualquier archivo fuente de Python como módulo ejecutando una
declaración de importación en algún otro archivo fuente de
Python. La importación tiene la siguiente sintaxis:
import module1[, module2[,... moduleN]
Cuando el intérprete encuentra una declaración de importación, importa el
módulo si el módulo está presente en la ruta de búsqueda. Una ruta de
búsqueda es una lista de directorios que el intérprete busca antes de importar
un módulo. Por ejemplo, para importar el módulo support.py, debe colocar el
siguiente comando en la parte superior del script:
#!/usr/bin/python
Módulos de localización
Cuando importa un módulo, el intérprete de Python busca el módulo en las
siguientes secuencias:
El directorio actual.
Si no se encuentra el módulo, Python busca cada directorio en la variable de shell
PYTHONPATH.
Si todo lo demás falla, Python verifica la ruta predeterminada. En UNIX, esta ruta
predeterminada es normalmente / usr / local / lib / python /.
La ruta de búsqueda del módulo se almacena en el módulo del sistema sys
como la variable sys.path . La variable sys.path contiene el directorio actual,
PYTHONPATH y el valor predeterminado dependiente de la instalación.
La variable PYTHONPATH
PYTHONPATH es una variable de entorno, que consiste en una lista de
directorios. La sintaxis de PYTHONPATH es la misma que la de la variable de
shell PATH.
Aquí hay una PYTHONPATH típica de un sistema Windows:
set PYTHONPATH = c:\python20\lib;
Y aquí hay una PYTHONPATH típica de un sistema UNIX:
set PYTHONPATH = /usr/local/lib/python
Money = 2000
def AddMoney():
# Uncomment the following line to fix the code:
# global Money
Money = Money + 1
print Money
AddMoney()
print Money
La función dir ()
La función incorporada dir () devuelve una lista ordenada de cadenas que
contienen los nombres definidos por un módulo.
La lista contiene los nombres de todos los módulos, variables y funciones que
se definen en un módulo. El siguiente es un ejemplo simple:
Demo en vivo
#!/usr/bin/python
# Import built-in module math
import math
content = dir(math)
print content
Cuando se ejecuta el código anterior, produce el siguiente resultado:
['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan',
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp',
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh',
'sqrt', 'tan', 'tanh']
Aquí, la variable de cadena especial __name__ es el nombre del módulo
y __file__ es el nombre de archivo desde el que se cargó el módulo.
La recarga () Función
Cuando el módulo se importa a un script, el código en la parte de nivel
superior de un módulo se ejecuta solo una vez.
Por lo tanto, si desea volver a ejecutar el código de nivel superior en un
módulo, puede usar la función reload () . La función reload () importa de nuevo
un módulo previamente importado. La sintaxis de la función reload () es esta:
reload(module_name)
Aquí, module_name es el nombre del módulo que desea volver a cargar y no
la cadena que contiene el nombre del módulo. Por ejemplo, para volver a
cargar el módulo hello , haga lo siguiente:
reload(hello)
Paquetes en Python
Un paquete es una estructura jerárquica de directorios de archivos que define
un único entorno de aplicación Python que consta de módulos y subpaquetes
y subpaquetes, y así sucesivamente.
Considere un archivo Pots.py disponible en el directorio telefónico . Este
archivo tiene la siguiente línea de código fuente:
#!/usr/bin/python
def Pots():
print "I'm Pots Phone"
De manera similar, tenemos otros dos archivos que tienen diferentes
funciones con el mismo nombre que el anterior:
Archivo Phone / Isdn.py que tiene la función Isdn ()
Teléfono / archivo G3.py que tiene la función G3 ()
Ahora, cree un archivo más __init__.py en el directorio telefónico -
Teléfono / __ init__.py
Para que todas sus funciones estén disponibles cuando haya importado el
teléfono, debe colocar declaraciones de importación explícitas en __init__.py
de la siguiente manera:
from Pots import Pots
from Isdn import Isdn
from G3 import G3
Después de agregar estas líneas a __init__.py, tiene todas estas clases
disponibles cuando importa el paquete del teléfono.
#!/usr/bin/python
Phone.Pots()
Phone.Isdn()
Phone.G3()
Cuando se ejecuta el código anterior, produce el siguiente resultado:
I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone
En el ejemplo anterior, hemos tomado un ejemplo de una sola función en cada
archivo, pero puede mantener múltiples funciones en sus archivos. También
puede definir diferentes clases de Python en esos archivos y luego puede
crear sus paquetes a partir de esas clases.
Python - E / S de archivos
Este capítulo cubre todas las funciones básicas de E / S disponibles en
Python. Para obtener más funciones, consulte la documentación estándar de
Python.
Imprimir en la pantalla
La forma más sencilla de producir resultados es usar la instrucción print donde
puede pasar cero o más expresiones separadas por comas. Esta función
convierte las expresiones que pasa en una cadena y escribe el resultado en la
salida estándar de la siguiente manera:
Demo en vivo
#!/usr/bin/python
Datos crudos
entrada
La función raw_input
La función raw_input ([prompt]) lee una línea de la entrada estándar y la
devuelve como una cadena (eliminando la nueva línea final).
#!/usr/bin/python
La función abierta
Antes de que pueda leer o escribir un archivo, debe abrirlo con la función open
() incorporada de Python . Esta función crea un objeto de archivo , que se
utilizaría para llamar a otros métodos de soporte asociados con él.
Sintaxis
1
r
Abre un archivo para solo lectura. El puntero del archivo se coloca al principio del
archivo. Este es el modo por defecto.
2
rb
Abre un archivo para leer solo en formato binario. El puntero del archivo se coloca
al principio del archivo. Este es el modo por defecto.
3
r+
Abre un archivo para leer y escribir. El puntero del archivo colocado al comienzo
del archivo.
44
rb +
Abre un archivo para leer y escribir en formato binario. El puntero del archivo
colocado al comienzo del archivo.
55
w
Abre un archivo para escribir solo. Sobrescribe el archivo si el archivo existe. Si el
archivo no existe, crea un nuevo archivo para escribir.
66
wb
Abre un archivo para escribir solo en formato binario. Sobrescribe el archivo si el
archivo existe. Si el archivo no existe, crea un nuevo archivo para escribir.
77
w+
Abre un archivo para escribir y leer. Sobrescribe el archivo existente si el archivo
existe. Si el archivo no existe, crea un nuevo archivo para leer y escribir.
8
wb +
Abre un archivo para escribir y leer en formato binario. Sobrescribe el archivo
existente si el archivo existe. Si el archivo no existe, crea un nuevo archivo para
leer y escribir.
99
un
Abre un archivo para anexar. El puntero del archivo está al final del archivo si el
archivo existe. Es decir, el archivo está en el modo agregar. Si el archivo no
existe, crea un nuevo archivo para escribir.
10
ab
Abre un archivo para agregarlo en formato binario. El puntero del archivo está al
final del archivo si el archivo existe. Es decir, el archivo está en el modo
agregar. Si el archivo no existe, crea un nuevo archivo para escribir.
11
a+
Abre un archivo para agregar y leer. El puntero del archivo está al final del archivo
si el archivo existe. El archivo se abre en el modo agregar. Si el archivo no existe,
crea un nuevo archivo para leer y escribir.
12
ab +
Abre un archivo para agregar y leer en formato binario. El puntero del archivo está
al final del archivo si el archivo existe. El archivo se abre en el modo agregar. Si el
archivo no existe, crea un nuevo archivo para leer y escribir.
No Atributo y Descripción
Señor.
1
archivo.closed
Devuelve verdadero si el archivo está cerrado, falso de lo contrario.
2
file.mode
Devuelve el modo de acceso con el que se abrió el archivo.
3
nombre del archivo
Devuelve el nombre del archivo.
44
file.softspace
Devuelve falso si se requiere espacio explícitamente con print, verdadero de lo
contrario.
Ejemplo
Demo en vivo
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
print "Closed or not : ", fo.closed
print "Opening mode : ", fo.mode
print "Softspace flag : ", fo.softspace
El método close ()
El método close () de un objeto de archivo vacía cualquier información no
escrita y cierra el objeto de archivo, después de lo cual no se puede escribir
más.
Python cierra automáticamente un archivo cuando el objeto de referencia de
un archivo se reasigna a otro archivo. Es una buena práctica usar el método
close () para cerrar un archivo.
Sintaxis
fileObject.close()
Ejemplo
Demo en vivo
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
El método write ()
El método write () escribe cualquier cadena en un archivo abierto. Es
importante tener en cuenta que las cadenas de Python pueden tener datos
binarios y no solo texto.
El método write () no agrega un carácter de nueva línea ('\ n') al final de la
cadena -
Sintaxis
fileObject.write(string)
Aquí, el parámetro pasado es el contenido que se escribirá en el archivo
abierto.
Ejemplo
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "wb")
fo.write( "Python is a great language.\nYeah its great!!\n")
El método read ()
El método read () lee una cadena de un archivo abierto. Es importante tener
en cuenta que las cadenas de Python pueden tener datos binarios. aparte de
los datos de texto.
Sintaxis
fileObject.read([count])
Aquí, el parámetro pasado es el número de bytes que se leerán del archivo
abierto. Este método comienza a leer desde el principio del archivo y si falta
el recuento , intenta leer lo más posible, tal vez hasta el final del archivo.
Ejemplo
# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()
Posiciones de archivo
El método tell () le dice la posición actual dentro del archivo; en otras palabras,
la próxima lectura o escritura se producirá en esa cantidad de bytes desde el
comienzo del archivo.
El método de búsqueda (desplazamiento [, desde]) cambia la posición actual
del archivo. El argumento de desplazamiento indica el número de bytes que se
moverán. El argumento from especifica la posición de referencia desde donde
se moverán los bytes.
Si from se establece en 0, significa usar el comienzo del archivo como la
posición de referencia y 1 significa usar la posición actual como la posición de
referencia y si se establece en 2, el final del archivo se tomará como la
posición de referencia .
Ejemplo
# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print "Read String is : ", str
El método rename ()
El método rename () toma dos argumentos, el nombre de archivo actual y el
nuevo nombre de archivo.
Sintaxis
os.rename(current_file_name, new_file_name)
Ejemplo
El método remove ()
Puede usar el método remove () para eliminar archivos al proporcionar el
nombre del archivo que se eliminará como argumento.
Sintaxis
os.remove(file_name)
Ejemplo
Directorios en Python
Todos los archivos están contenidos en varios directorios, y Python no tiene
problemas para manejarlos también. El módulo os tiene varios métodos que lo
ayudan a crear, eliminar y cambiar directorios.
El método mkdir ()
Puede usar el método mkdir () del módulo os para crear directorios en el
directorio actual. Debe proporcionar un argumento para este método que
contenga el nombre del directorio que se creará.
Sintaxis
os.mkdir("newdir")
Ejemplo
El método chdir ()
Puede usar el método chdir () para cambiar el directorio actual. El método
chdir () toma un argumento, que es el nombre del directorio que desea que
sea el directorio actual.
Sintaxis
os.chdir("newdir")
Ejemplo
El siguiente es el ejemplo para ir al directorio "/ home / newdir":
#!/usr/bin/python
import os
El getcwd () Método
El método getcwd () muestra el directorio de trabajo actual.
Sintaxis
os.getcwd()
Ejemplo
El rmdir () Método
El método rmdir () elimina el directorio, que se pasa como argumento en el
método.
Antes de eliminar un directorio, se debe eliminar todo su contenido.
Sintaxis
os.rmdir('dirname')
Ejemplo
1
Excepción
Clase base para todas las excepciones.
2
StopIteration
Se genera cuando el método next () de un iterador no apunta a ningún objeto.
3
SystemExit
Levantado por la función sys.exit ().
44
Error estándar
Clase base para todas las excepciones integradas, excepto StopIteration y
SystemExit.
55
ArithmeticError
Clase base para todos los errores que ocurren para el cálculo numérico.
66
OverflowError
Se genera cuando un cálculo excede el límite máximo para un tipo numérico.
77
FloatingPointError
Se genera cuando falla un cálculo de coma flotante.
8
ZeroDivisionError
Se genera cuando se realiza la división o módulo por cero para todos los tipos
numéricos.
99
AserciónError
Planteado en caso de falla de la declaración de Afirmación.
10
AttributeError
Levantado en caso de falla de la referencia o asignación del atributo.
11
EOFError
Se genera cuando no hay entrada desde la función raw_input () o input () y se
alcanza el final del archivo.
12
ImportError
Se genera cuando falla una declaración de importación.
13
Teclado interrumpido
Se genera cuando el usuario interrumpe la ejecución del programa,
generalmente presionando Ctrl + c.
14
LookupError
Clase base para todos los errores de búsqueda.
15
IndexError
Se genera cuando no se encuentra un índice en una secuencia.
dieciséis
KeyError
Se genera cuando la clave especificada no se encuentra en el diccionario.
17
NameError
Se genera cuando no se encuentra un identificador en el espacio de nombres
local o global.
18 años
UnboundLocalError
Se genera cuando se intenta acceder a una variable local en una función o
método pero no se le ha asignado ningún valor.
19
AmbienteError
Clase base para todas las excepciones que se producen fuera del entorno de
Python.
20
IOError
Se genera cuando falla una operación de entrada / salida, como la instrucción
print o la función open () cuando se intenta abrir un archivo que no existe.
21
IOError
Generado para errores relacionados con el sistema operativo.
22
Error de sintaxis
Se genera cuando hay un error en la sintaxis de Python.
23
IndentaciónError
Levantado cuando la sangría no se especifica correctamente.
24
Error del sistema
Se genera cuando el intérprete encuentra un problema interno, pero cuando se
encuentra este error, el intérprete de Python no sale.
25
SystemExit
Se genera cuando se cierra el intérprete de Python utilizando la función sys.exit
(). Si no se maneja en el código, hace que el intérprete salga.
26
Error de tecleado
Se genera cuando se intenta una operación o función que no es válida para el
tipo de datos especificado.
27
ValueError
Se genera cuando la función incorporada para un tipo de datos tiene el tipo
válido de argumentos, pero los argumentos tienen valores no válidos
especificados.
28
Error de tiempo de ejecución
Se genera cuando un error generado no cae en ninguna categoría.
29
NotImplementedError
Se genera cuando un método abstracto que debe implementarse en una clase
heredada no se implementa realmente.
Afirmaciones en Python
La declaración de afirmación
Ejemplo
Aquí hay una función que convierte una temperatura de grados Kelvin a
grados Fahrenheit. Dado que cero grados Kelvin está tan frío como se pone, la
función se rescata si ve una temperatura negativa:
Demo en vivo
#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
assert (Temperature >= 0),"Colder than absolute zero!"
return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
¿Qué es la excepción?
Una excepción es un evento que ocurre durante la ejecución de un programa
que interrumpe el flujo normal de las instrucciones del programa. En general,
cuando un script de Python se encuentra con una situación que no puede
afrontar, genera una excepción. Una excepción es un objeto Python que
representa un error.
Cuando una secuencia de comandos de Python genera una excepción, debe
manejar la excepción de inmediato; de lo contrario, finaliza y se cierra.
Sintaxis
Aquí hay una sintaxis simple de try ... excepto ... else blocks -
try:
You do your operations here;
......................
except ExceptionI:
If there is ExceptionI, then execute this block.
except ExceptionII:
If there is ExceptionII, then execute this block.
......................
else:
If there is no exception then execute this block.
Aquí hay algunos puntos importantes sobre la sintaxis mencionada
anteriormente:
Una sola declaración de prueba puede tener múltiples, excepto las
declaraciones. Esto es útil cuando el bloque try contiene sentencias que pueden
arrojar diferentes tipos de excepciones.
También puede proporcionar una cláusula genérica excepto, que maneja cualquier
excepción.
Después de la (s) cláusula (s) excepto, puede incluir una cláusula else. El código
en el bloque else se ejecuta si el código en el bloque try: no genera una
excepción.
El bloque else es un buen lugar para el código que no necesita probar: la
protección del bloque.
Ejemplo
try:
fh = open("testfile", "w")
fh.write("This is my test file for exception handling!!")
except IOError:
print "Error: can\'t find file or read data"
else:
print "Written content in the file successfully"
fh.close()
Esto produce el siguiente resultado:
Written content in the file successfully
Ejemplo
Este ejemplo intenta abrir un archivo donde no tiene permiso de escritura, por
lo que genera una excepción:
Demo en vivo
#!/usr/bin/python
try:
fh = open("testfile", "r")
fh.write("This is my test file for exception handling!!")
except IOError:
print "Error: can\'t find file or read data"
else:
print "Written content in the file successfully"
Esto produce el siguiente resultado:
Error: can't find file or read data
La cláusula excepto sin excepciones
También puede usar la instrucción except sin excepciones definidas de la
siguiente manera:
try:
You do your operations here;
......................
except:
If there is any exception, then execute this block.
......................
else:
If there is no exception then execute this block.
Este tipo de declaración try-except captura todas las excepciones que
ocurren. Sin embargo, el uso de este tipo de declaración try-except no se
considera una buena práctica de programación, ya que captura todas las
excepciones pero no hace que el programador identifique la causa raíz del
problema que puede ocurrir.
Demo en vivo
#!/usr/bin/python
try:
fh = open("testfile", "w")
fh.write("This is my test file for exception handling!!")
finally:
print "Error: can\'t find file or read data"
try:
fh = open("testfile", "w")
try:
fh.write("This is my test file for exception
handling!!")
finally:
print "Going to close the file"
fh.close()
except IOError:
print "Error: can\'t find file or read data"
Ejemplo
Levantando Excepciones
Puede generar excepciones de varias maneras utilizando la declaración de
aumento. La sintaxis general para la declaración raise es la siguiente.
Sintaxis
Ejemplo
Una excepción puede ser una cadena, una clase o un objeto. La mayoría de
las excepciones que plantea el núcleo de Python son clases, con un
argumento que es una instancia de la clase. Definir nuevas excepciones es
bastante fácil y se puede hacer de la siguiente manera:
def functionName( level ):
if level < 1:
raise "Invalid level!", level
# The code below to this would not be executed
# if we raise the exception
Nota: Para capturar una excepción, una cláusula "excepto" debe referirse a la
misma excepción lanzada, ya sea objeto de clase o cadena simple. Por
ejemplo, para capturar la excepción anterior, debemos escribir la cláusula
except de la siguiente manera:
try:
Business Logic here...
except "Invalid level!":
Exception handling here...
else:
Rest of the code here...
Creando clases
La declaración de clase crea una nueva definición de clase. El nombre de la
clase sigue inmediatamente a la clase de palabra clave seguida de dos puntos
de la siguiente manera:
class ClassName:
'Optional class documentation string'
class_suite
La clase tiene una cadena de documentación, a la que se puede acceder a través
de ClassName .__ doc__ .
El class_suite se compone de todos los componentes que definen declaraciones
miembros de la clase, atributos de datos y funciones.
Ejemplo
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
La variable empCount es una variable de clase cuyo valor se comparte entre todas
las instancias de esta clase. Se puede acceder a este
como Employee.empCount desde dentro de la clase o fuera de la clase.
El primer método __init __ () es un método especial, que se llama constructor de
clases o método de inicialización que Python llama cuando crea una nueva
instancia de esta clase.
Usted declara otros métodos de clase como funciones normales con la excepción
de que el primer argumento para cada método es self . Python agrega
el argumento propio a la lista por usted; no necesita incluirlo cuando llame a los
métodos.
Acceso a atributos
Accede a los atributos del objeto utilizando el operador de punto con
objeto. Se accedería a la variable de clase usando el nombre de clase de la
siguiente manera:
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount
Ahora, juntando todos los conceptos:
Demo en vivo
#!/usr/bin/python
class Employee:
'Common base class for all employees'
empCount = 0
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
class Employee:
'Common base class for all employees'
empCount = 0
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
Ejemplo
class Point:
def __init__( self, x=0, y=0):
self.x = x
self.y = y
def __del__(self):
class_name = self.__class__.__name__
print class_name, "destroyed"
pt1 = Point()
pt2 = pt1
pt3 = pt1
print id(pt1), id(pt2), id(pt3) # prints the ids of the
obejcts
del pt1
del pt2
del pt3
Herencia de clase
En lugar de comenzar desde cero, puede crear una clase derivándola de una
clase preexistente enumerando la clase primaria entre paréntesis después del
nuevo nombre de clase.
La clase secundaria hereda los atributos de su clase primaria, y puede usar
esos atributos como si estuvieran definidos en la clase secundaria. Una clase
secundaria también puede anular los miembros y métodos de datos del padre.
Sintaxis
Ejemplo
Demo en vivo
#!/usr/bin/python
def parentMethod(self):
print 'Calling parent method'
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print "Parent attribute :", Parent.parentAttr
def childMethod(self):
print 'Calling child method'
Ejemplo
Demo en vivo
#!/usr/bin/python
1
__init__ (self [, args ...])
Constructor (con cualquier argumento opcional)
Llamada de muestra: obj = className (args)
2
__del __ (auto)
Destructor, elimina un objeto
Llamada de muestra: del obj
3
__repr __ (auto)
Representación de cadena evaluable
Llamada de muestra: repr (obj)
44
__str __ (auto)
Representación de cadena imprimible
Llamada de muestra: str (obj)
55
__cmp__ (auto, x)
Comparación de objetos
Llamada de muestra: cmp (obj, x)
Operadores de sobrecarga
Supongamos que ha creado una clase Vector para representar vectores
bidimensionales, ¿qué sucede cuando usa el operador más para
agregarlos? Lo más probable es que Python te grite.
Sin embargo, podría definir el método __add__ en su clase para realizar la
suma de vectores y luego el operador más se comportaría según las
expectativas:
Ejemplo
Demo en vivo
#!/usr/bin/python
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print v1 + v2
Ejemplo
Demo en vivo
#!/usr/bin/python
class JustCounter:
__secretCount = 0
def count(self):
self.__secretCount += 1
print self.__secretCount
counter = JustCounter()
counter.count()
counter.count()
print counter.__secretCount
Cuando se ejecuta el código anterior, produce el siguiente resultado:
1
2
Traceback (most recent call last):
File "test.py", line 12, in <module>
print counter.__secretCount
AttributeError: JustCounter instance has no attribute
'__secretCount'
Python protege a esos miembros cambiando internamente el nombre para
incluir el nombre de la clase. Puede acceder a atributos
como object._className__attrName . Si reemplaza su última línea de la
siguiente manera, entonces funciona para usted:
.........................
print counter._JustCounter__secretCount
Cuando se ejecuta el código anterior, produce el siguiente resultado:
1
2
2
Python - Expresiones regulares
Una expresión regular es una secuencia especial de caracteres que le ayuda a
unir o encontrar otras cadenas o conjuntos de cadenas, utilizando una sintaxis
especializada contenida en un patrón. Las expresiones regulares son
ampliamente utilizadas en el mundo UNIX.
El módulo re proporciona soporte completo para expresiones regulares
similares a Perl en Python. El módulo re genera la excepción re.error si se
produce un error al compilar o utilizar una expresión regular.
Cubriremos dos funciones importantes, que se utilizarían para manejar
expresiones regulares. Pero una pequeña cosa primero: hay varios caracteres,
que tendrían un significado especial cuando se usan en expresiones
regulares. Para evitar cualquier confusión al tratar con expresiones
regulares, usaríamos cadenas sin procesar como r'expression ' .
La función de coincidencia
Esta función intenta hacer coincidir el patrón RE con
la cadena con banderas opcionales .
Aquí está la sintaxis para esta función:
re.match(pattern, string, flags=0)
Aquí está la descripción de los parámetros:
No Descripción de parámetros
Señor.
1
modelo
Esta es la expresión regular que debe coincidir.
2
cuerda
Esta es la cadena, que se buscaría para que coincida con el patrón al comienzo de
la cadena.
3
banderas
Puede especificar diferentes indicadores utilizando OR a nivel de bit (|). Estos son
modificadores, que se enumeran en la tabla a continuación.
1
grupo (num = 0)
Este método devuelve una coincidencia completa (o un número de subgrupo
específico)
2
grupos ()
Este método devuelve todos los subgrupos coincidentes en una tupla (vacía si no
hubiera ninguna)
Ejemplo
Demo en vivo
#!/usr/bin/python
import re
if matchObj:
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
else:
print "No match!!"
La función de búsqueda
Esta función busca la primera aparición del patrón RE dentro de
una cadena con banderas opcionales .
Aquí está la sintaxis para esta función:
re.search(pattern, string, flags=0)
Aquí está la descripción de los parámetros:
No Descripción de parámetros
Señor.
1
modelo
Esta es la expresión regular que debe coincidir.
2
cuerda
Esta es la cadena, que se buscaría para que coincida con el patrón en cualquier
parte de la cadena.
3
banderas
Puede especificar diferentes indicadores utilizando OR a nivel de bit (|). Estos son
modificadores, que se enumeran en la tabla a continuación.
1
grupo (num = 0)
Este método devuelve una coincidencia completa (o un número de subgrupo
específico)
2
grupos ()
Este método devuelve todos los subgrupos coincidentes en una tupla (vacía si no
hubiera ninguna)
Ejemplo
Demo en vivo
#!/usr/bin/python
import re
if searchObj:
print "searchObj.group() : ", searchObj.group()
print "searchObj.group(1) : ", searchObj.group(1)
print "searchObj.group(2) : ", searchObj.group(2)
else:
print "Nothing found!!"
Ejemplo
Demo en vivo
#!/usr/bin/python
import re
Buscar y reemplazar
Uno de los métodos re más importantes que usan expresiones regulares
es sub .
Sintaxis
Demo en vivo
#!/usr/bin/python
import re
No Modificador y Descripción
Señor.
1
re.I
Realiza coincidencias entre mayúsculas y minúsculas.
2
re.L
Interpreta palabras de acuerdo con el entorno local actual. Esta interpretación
afecta al grupo alfabético (\ w y \ W), así como al comportamiento de los límites de
las palabras (\ by \ B).
3
movimiento rápido del ojo
Hace que $ coincida con el final de una línea (no solo con el final de la cadena) y
hace que ^ coincida con el inicio de cualquier línea (no solo con el inicio de la
cadena).
44
re.S
Hace que un punto (punto) coincida con cualquier carácter, incluida una nueva
línea.
55
re.U
Interpreta letras de acuerdo con el juego de caracteres Unicode. Este indicador
afecta el comportamiento de \ w, \ W, \ b, \ B.
66
re.X
Permite la sintaxis de expresión regular "más linda". Ignora los espacios en blanco
(excepto dentro de un conjunto [] o cuando se escapa por una barra invertida) y
trata el # sin escape como un marcador de comentario.
No Patrón y descripción
Señor.
1
^
Coincide con el comienzo de la línea.
2
PS
Coincide con el final de línea.
3
.
Coincide con cualquier carácter, excepto la nueva línea. Usar la opción m también
le permite coincidir con la nueva línea.
44
[...]
Coincide con cualquier carácter entre paréntesis.
55
[^ ...]
Coincide con cualquier carácter individual que no esté entre paréntesis
66
re*
Coincide con 0 o más ocurrencias de la expresión anterior.
77
re +
Coincide con 1 o más ocurrencias de la expresión anterior.
8
¿re?
Coincide con 0 o 1 aparición de la expresión anterior.
99
re {n}
Coincide exactamente n número de ocurrencias de expresiones anteriores.
10
re {n,}
Coincide con n o más ocurrencias de expresiones anteriores.
11
re {n, m}
Coincide al menos n y como máximo m ocurrencias de expresiones anteriores.
12
a | si
Coincide con ao b.
13
(re)
Agrupa expresiones regulares y recuerda texto coincidente.
14
(? imx)
Alterna temporalmente en las opciones i, m o x dentro de una expresión
regular. Si entre paréntesis, solo esa área se ve afectada.
15
(? -imx)
Desactiva temporalmente las opciones i, m o x dentro de una expresión
regular. Si entre paréntesis, solo esa área se ve afectada.
dieciséis
(?: re)
Agrupa expresiones regulares sin recordar texto coincidente.
17
(? imx: re)
Alterna temporalmente entre las opciones i, m o x entre paréntesis.
18 años
(? -imx: re)
Desactiva temporalmente las opciones i, m o x entre paréntesis.
19
(? # ...)
Comentario.
20
(? = re)
Especifica la posición usando un patrón. No tiene rango.
21
(?! re)
Especifica la posición usando la negación del patrón. No tiene rango.
22
(?> re)
Coincide con el patrón independiente sin retroceso.
23
\w
Coincide con caracteres de palabras.
24
\W
Coincide con caracteres que no son palabras.
25
\s
Coincide con espacios en blanco. Equivalente a [\ t \ n \ r \ f].
26
\S
Coincide con espacios no en blanco.
27
\re
Coincide con dígitos. Equivalente a [0-9].
28
\RE
Partidos no digitales.
29
\UN
Coincide con el comienzo de la cadena.
30
\Z
Coincide con el final de la cadena. Si existe una nueva línea, coincide justo antes
de la nueva línea.
31
\z
Coincide con el final de la cadena.
32
\SOL
Los partidos señalan dónde terminó el último partido.
33
\si
Coincide con los límites de palabras cuando está fuera de los corchetes. Coincide
con el espacio de retroceso (0x08) dentro de los corchetes.
34
\SI
Coincide con los límites sin palabras.
35
\ n, \ t, etc.
Coincide con nuevas líneas, retornos de carro, pestañas, etc.
36
\ 1 ... \ 9
Coincide enésima subexpresión agrupada.
37
\ 10
Coincide con la subexpresión agrupada enésima si ya coincide. De lo contrario,
se refiere a la representación octal de un código de caracteres.
No Ejemplo y descripción
Señor.
1
pitón
Coincide con "pitón".
Clases de personajes
No Ejemplo y descripción
Señor.
1
[Pp] ython
Haga coincidir "Python" o "python"
2
frotar [ye]
Haga coincidir "ruby" o "rube"
3
[aeiou]
Emparejar cualquier vocal minúscula
44
[0-9]
Coincide con cualquier dígito; igual que [0123456789]
55
[Arizona]
Coincide con cualquier letra minúscula ASCII
66
[ARIZONA]
Coincide con cualquier letra ASCII mayúscula
77
[a-zA-Z0-9]
Coincidir con cualquiera de los anteriores
8
[^ aeiou]
Empareja cualquier cosa que no sea una vocal en minúsculas
99
[^ 0-9]
Iguala cualquier cosa que no sea un dígito
Clases especiales de personajes
No Ejemplo y descripción
Señor.
1
.
Coincide con cualquier personaje excepto la nueva línea
2
\re
Hacer coincidir un dígito: [0-9]
3
\RE
Coincidir con un no digito: [^ 0-9]
44
\s
Haga coincidir un carácter de espacio en blanco: [\ t \ r \ n \ f]
55
\S
Coincidencia de espacios no en blanco: [^ \ t \ r \ n \ f]
66
\w
Haga coincidir un carácter de una sola palabra: [A-Za-z0-9_]
77
\W
Haga coincidir un carácter que no sea una palabra: [^ A-Za-z0-9_]
Casos de repetición
No Ejemplo y descripción
Señor.
1
¿rubí?
Haga coincidir "rub" o "ruby": la y es opcional
2
rubí*
Coincide con "frotar" más 0 o más ys
3
rubí +
Empareja "frotar" más 1 o más ys
44
\ d {3}
Iguala exactamente 3 dígitos
55
\ d {3,}
Match 3 o más dígitos
66
\ d {3,5}
Match 3, 4 o 5 dígitos
Repetición no cruel
Esto coincide con el menor número de repeticiones:
1
<. *>
Repetición codiciosa: coincide con "<python> perl>"
2
<. *?>
No codicioso: coincide con "<python>" en "<python> perl>"
1
\D\d+
Sin grupo: + repeticiones \ d
2
(\ D \ d) +
Agrupado: + repeticiones \ D \ d par
3
([Pp] ython (,)?) +
Haga coincidir "Python", "Python, python, python", etc.
Referencias
Esto coincide con un grupo previamente emparejado nuevamente:
No Ejemplo y descripción
Señor.
1
([Pp]) ython & \ 1ails
Coincide con python y cubos o Python y cubos
2
(['"]) [^ \ 1] * \ 1
Cadena de comillas simples o dobles. \ 1 coincide con lo que coincida con el
primer grupo. \ 2 coincide con lo que coincida con el segundo grupo, etc.
Alternativas
No Ejemplo y descripción
Señor.
1
python | perl
Haga coincidir "python" o "perl"
2
frotar (y | le))
Empareja "rubí" o "rublo"
3
Python (! + | \?)
"Python" seguido de uno o más! o uno ?
Anclas
Esto necesita especificar la posición del partido.
No Ejemplo y descripción
Señor.
1
^ Python
Haga coincidir "Python" al comienzo de una cadena o línea interna
2
Python $
Haga coincidir "Python" al final de una cadena o línea
3
\ APython
Haga coincidir "Python" al comienzo de una cadena
44
Python \ Z
Haga coincidir "Python" al final de una cadena
55
\ bPython \ b
Haga coincidir "Python" en un límite de palabra
66
\ brub \ B
\ B es el límite de una palabra: coincide con "rub" en "rube" y "ruby" pero no solo
77
Python (? =!)
Haga coincidir "Python", si va seguido de un signo de exclamación.
8
Pitón(?!!)
Haga coincidir "Python", si no seguido de un signo de exclamación.
1
R (? # Comentario)
Partidos "R". Todo lo demás es un comentario.
2
R (? I) uby
No distingue entre mayúsculas y minúsculas mientras coincide con "uby"
3
R (? I: uby)
Lo mismo que arriba
44
frotar (?: y | le))
Agrupar solo sin crear \ 1 referencia
¿Qué es el CGI?
La interfaz de puerta de enlace común, o CGI, es un estándar para que los
programas de puerta de enlace externos interactúen con servidores de
información como los servidores HTTP.
La versión actual es CGI / 1.1 y CGI / 1.2 está en progreso.
Buscando en la web
Para comprender el concepto de CGI, veamos qué sucede cuando hacemos
clic en un hipervínculo para navegar por una página web o URL en particular.
Su navegador se pone en contacto con el servidor web HTTP y exige la URL, es
decir, el nombre del archivo.
El servidor web analiza la URL y busca el nombre de archivo. Si encuentra ese
archivo, lo devuelve al navegador, de lo contrario, envía un mensaje de error que
indica que solicitó un archivo incorrecto.
El navegador web toma la respuesta del servidor web y muestra el archivo recibido
o el mensaje de error.
Sin embargo, es posible configurar el servidor HTTP para que cada vez que se
solicite un archivo en un determinado directorio no se envíe de vuelta; en su
lugar, se ejecuta como un programa, y lo que ese programa genera se
devuelve para que su navegador lo muestre. Esta función se llama Common
Gateway Interface o CGI y los programas se llaman scripts CGI. Estos
programas CGI pueden ser Python Script, PERL Script, Shell Script, programa
C o C ++, etc.
Diagrama de arquitectura CGI
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
Encabezado HTTP
La línea Content-type: text / html \ r \ n \ r \ n forma parte del encabezado
HTTP que se envía al navegador para comprender el contenido. Todo el
encabezado HTTP estará en la siguiente forma:
HTTP Field Name: Field Content
For Example
Content-type: text/html\r\n\r\n
Hay algunos otros encabezados HTTP importantes, que utilizará con
frecuencia en su programación CGI.
No Encabezado y descripción
Señor.
1
Tipo de contenido:
Una cadena MIME que define el formato del archivo que se devuelve. El ejemplo
es Content-type: text / html
2
Caduca: fecha
La fecha en que la información deja de ser válida. El navegador lo utiliza para
decidir cuándo se debe actualizar una página. Una cadena de fecha válida tiene el
formato 01 de enero de 1998 12:00:00 GMT.
3
Ubicación: URL
La URL que se devuelve en lugar de la URL solicitada. Puede usar este campo
para redirigir una solicitud a cualquier archivo.
44
Última modificación: fecha
La fecha de la última modificación del recurso.
55
Longitud del contenido: N
La longitud, en bytes, de los datos que se devuelven. El navegador utiliza este
valor para informar el tiempo estimado de descarga de un archivo.
66
Set-Cookie: Cadena
Establecer la cookie pasada a través de la cadena
1
TIPO DE CONTENIDO
El tipo de datos del contenido. Se usa cuando el cliente envía contenido adjunto al
servidor. Por ejemplo, carga de archivos.
2
LARGANCIA DE CONTENIDO
La longitud de la información de la consulta. Está disponible solo para solicitudes
POST.
3
HTTP_COOKIE
Devuelve las cookies establecidas en forma de par clave y valor.
44
HTTP_USER_AGENT
El campo de encabezado de solicitud de agente de usuario contiene información
sobre el agente de usuario que origina la solicitud. Es el nombre del navegador
web.
55
RUTA_INFO
El camino para el script CGI.
66
QUERY_STRING
La información codificada en URL que se envía con la solicitud del método GET.
77
REMOTE_ADDR
La dirección IP del host remoto que realiza la solicitud. Este es un registro útil o
para autenticación.
8
SERVIDOR REMOTO
El nombre completo del host que realiza la solicitud. Si esta información no está
disponible, entonces REMOTE_ADDR se puede usar para obtener la dirección IR.
99
SOLICITUD_MÉTODO
El método utilizado para realizar la solicitud. Los métodos más comunes son GET y
POST.
10
SCRIPT_FILENAME
La ruta completa al script CGI.
11
SCRIPT_NAME
El nombre del script CGI.
12
NOMBRE DEL SERVIDOR
El nombre de host del servidor o la dirección IP
13
SERVER_SOFTWARE
El nombre y la versión del software que ejecuta el servidor.
Aquí hay un pequeño programa CGI para enumerar todas las variables
CGI. Haga clic en este enlace para ver el resultado Obtener entorno
#!/usr/bin/python
import os
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"
Nombre de pila:
Enviar
Apellido:
Pasando información usando el método POST
Un método generalmente más confiable de pasar información a un programa
CGI es el método POST. Esto empaqueta la información exactamente de la
misma manera que los métodos GET, pero en lugar de enviarla como una
cadena de texto después de un? en la URL lo envía como un mensaje
separado. Este mensaje entra en el script CGI en forma de entrada estándar.
A continuación se muestra el mismo script hello_get.py que maneja el método
GET y POST.
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"
Nombre de pila:
Enviar
Apellido:
Pasar los datos de la casilla de verificación al
programa CGI
Las casillas de verificación se usan cuando se requiere seleccionar más de
una opción.
Aquí hay un código HTML de ejemplo para un formulario con dos casillas de
verificación:
<form action = "/cgi-bin/checkbox.cgi" method = "POST" target
= "_blank">
<input type = "checkbox" name = "maths" value = "on" /> Maths
<input type = "checkbox" name = "physics" value = "on" />
Physics
<input type = "submit" value = "Select Subject" />
</form>
if form.getvalue('physics'):
physics_flag = "ON"
else:
physics_flag = "OFF"
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Checkbox - Third CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> CheckBox Maths is : %s</h2>" % math_flag
print "<h2> CheckBox Physics is : %s</h2>" % physics_flag
print "</body>"
print "</html>"
Pasar datos de botón de radio al programa CGI
Los botones de radio se usan cuando solo se requiere seleccionar una opción.
Aquí hay un código HTML de ejemplo para un formulario con dos botones de
opción:
<form action = "/cgi-bin/radiobutton.py" method = "post"
target = "_blank">
<input type = "radio" name = "subject" value = "maths" />
Maths
<input type = "radio" name = "subject" value = "physics" />
Physics
<input type = "submit" value = "Select Subject" />
</form>
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Radio - Fourth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"
Enviar
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>";
print "<title>Text Area - Fifth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Entered Text Content is %s</h2>" % text_content
print "</body>"
Matemáticas Enviar
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Dropdown Box - Sixth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"
Configurar cookies
Es muy fácil enviar cookies al navegador. Estas cookies se envían junto con el
Encabezado HTTP antes al campo Tipo de contenido. Suponiendo que desea
establecer la identificación de usuario y la contraseña como cookies. La
configuración de las cookies se realiza de la siguiente manera:
#!/usr/bin/python
Recuperando Cookies
Es muy fácil recuperar todas las cookies establecidas. Las cookies se
almacenan en la variable de entorno CGI HTTP_COOKIE y tendrán la
siguiente forma:
key1 = value1;key2 = value2;key3 = value3....
Aquí hay un ejemplo de cómo recuperar cookies.
#!/usr/bin/python
if environ.has_key('HTTP_COOKIE'):
for cookie in map(strip, split(environ['HTTP_COOKIE'],
';')):
(key, value ) = split(cookie, '=');
if key == "UserID":
user_id = value
if key == "Password":
password = value
Upload
El ejemplo anterior se ha deshabilitado intencionalmente para salvar a las
personas que cargan archivos en nuestro servidor, pero puede probar el
código anterior con su servidor.
Aquí está el script save_file.py para manejar la carga de archivos:
#!/usr/bin/python
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html>
<body>
<p>%s</p>
</body>
</html>
""" % (message,)
Si ejecuta el script anterior en Unix / Linux, debe ocuparse de reemplazar el
separador de archivos de la siguiente manera; de lo contrario, en su máquina
de Windows, la instrucción open () debería funcionar bien.
fn = os.path.basename(fileitem.filename.replace("\\", "/" ))
# HTTP Header
print "Content-Type:application/octet-stream; name =
\"FileName\"\r\n";
print "Content-Disposition: attachment; filename =
\"FileName\"\r\n\n";
str = fo.read();
print str
GadFly
mSQL
MySQL
PostgreSQL
Microsoft SQL Server 2000
Informix
Interbase
Oracle
Sybase
Aquí está la lista de interfaces de base de datos Python disponibles: Interfaces
de base de datos Python y API . Debe descargar un módulo API DB diferente
para cada base de datos a la que necesite acceder. Por ejemplo, si necesita
acceder a una base de datos Oracle y a una base de datos MySQL, debe
descargar los módulos de base de datos Oracle y MySQL.
La API DB proporciona un estándar mínimo para trabajar con bases de datos
utilizando estructuras y sintaxis de Python siempre que sea posible. Esta API
incluye lo siguiente:
¿Qué es MySQLdb?
MySQLdb es una interfaz para conectarse a un servidor de base de datos
MySQL desde Python. Implementa la Python Database API v2.0 y está
construida sobre la API MySQL C.
import MySQLdb
Ejemplo
import MySQLdb
Ejemplo
import MySQLdb
cursor.execute(sql)
INSERTAR Operación
Es obligatorio cuando desea crear sus registros en una tabla de base de
datos.
Ejemplo
import MySQLdb
import MySQLdb
Ejemplo
Operación LEER
La operación READ en cualquier base de datos significa obtener información
útil de la base de datos.
Una vez que se establece nuestra conexión de base de datos, está listo para
realizar una consulta en esta base de datos. Puede usar el método fetchone
() para obtener un registro único o el método fetchall () para fechizar múltiples
valores de una tabla de base de datos.
fetchone () : recupera la siguiente fila de un conjunto de resultados de la
consulta. Un conjunto de resultados es un objeto que se devuelve cuando se usa
un objeto cursor para consultar una tabla.
fetchall () : recupera todas las filas de un conjunto de resultados. Si algunas filas
ya se han extraído del conjunto de resultados, recupera las filas restantes del
conjunto de resultados.
rowcount : este es un atributo de solo lectura y devuelve el número de filas
afectadas por un método execute ().
Ejemplo
Operación de actualización
ACTUALIZAR La operación en cualquier base de datos significa actualizar uno
o más registros, que ya están disponibles en la base de datos.
El siguiente procedimiento actualiza todos los registros que tienen SEXO
como 'M' . Aquí, aumentamos la EDAD de todos los hombres en un año.
Ejemplo
#!/usr/bin/python
import MySQLdb
Operación ELIMINAR
La operación ELIMINAR es necesaria cuando desea eliminar algunos registros
de su base de datos. El siguiente es el procedimiento para eliminar todos los
registros del EMPLEADO donde la EDAD es más de 20 -
Ejemplo
#!/usr/bin/python
import MySQLdb
Ejemplo
Operación COMMIT
Commit es la operación, que da una señal verde a la base de datos para
finalizar los cambios, y después de esta operación, no se puede revertir
ningún cambio.
Aquí hay un ejemplo simple para llamar al método commit .
db.commit()
Operación ROLLBACK
Si no está satisfecho con uno o más de los cambios y desea revertirlos por
completo, utilice el método rollback () .
Aquí hay un ejemplo simple para llamar al método rollback () .
db.rollback()
Desconectando la base de datos
Para desconectar la conexión de la base de datos, use el método close ().
db.close()
Si el usuario cierra la conexión a una base de datos con el método close (), la
base de datos revierte cualquier transacción pendiente. Sin embargo, en lugar
de depender de cualquiera de los detalles de implementación de nivel inferior
de la base de datos, sería mejor que su aplicación llame explícitamente a
commit o rollback.
Errores de manejo
Hay muchas fuentes de errores. Algunos ejemplos son un error de sintaxis en
una instrucción SQL ejecutada, un error de conexión o la llamada al método
fetch para un identificador de instrucción ya cancelado o terminado.
La API DB define una serie de errores que deben existir en cada módulo de
base de datos. La siguiente tabla enumera estas excepciones.
No Excepción y Descripción
Señor.
1
Advertencia
Utilizado para problemas no fatales. Debe subclase StandardError.
2
Error
Clase base para errores. Debe subclase StandardError.
3
InterfaceError
Se usa para errores en el módulo de base de datos, no en la base de datos en
sí. Debe subclase Error.
44
Error de la base de datos
Usado para errores en la base de datos. Debe subclase Error.
55
Error de datos
Subclase de DatabaseError que se refiere a errores en los datos.
66
Error operacional
Subclase de DatabaseError que se refiere a errores como la pérdida de una
conexión a la base de datos. Estos errores generalmente están fuera del control del
scripter de Python.
77
IntegridadError
Subclase de DatabaseError para situaciones que dañarían la integridad relacional,
como restricciones de unicidad o claves foráneas.
8
Error interno
Subclase de DatabaseError que se refiere a errores internos del módulo de base de
datos, como un cursor que ya no está activo.
99
ProgrammingError
Subclase de DatabaseError que se refiere a errores como un nombre de tabla
incorrecto y otras cosas que se pueden culpar de forma segura.
10
NotSupportedError
Subclase de DatabaseError que se refiere a intentar llamar a una funcionalidad no
compatible.
Sus scripts de Python deben manejar estos errores, pero antes de usar
cualquiera de las excepciones anteriores, asegúrese de que su MySQLdb sea
compatible con esa excepción. Puede obtener más información sobre ellos
leyendo la especificación DB API 2.0.
No Plazo y Descripción
Señor.
1
Dominio
La familia de protocolos que se utiliza como mecanismo de transporte. Estos
valores son constantes como AF_INET, PF_INET, PF_UNIX, PF_X25, etc.
2
tipo
El tipo de comunicaciones entre los dos puntos finales, generalmente
SOCK_STREAM para protocolos orientados a conexión y SOCK_DGRAM para
protocolos sin conexión.
3
protocolo
Típicamente cero, esto puede usarse para identificar una variante de un protocolo
dentro de un dominio y tipo.
44
nombre de host
El identificador de una interfaz de red:
Una cadena, que puede ser un nombre de host, una dirección de cuatro
puntos o una dirección IPV6 en notación de dos puntos (y posiblemente
punto)
Una cadena "<castcast>", que especifica una dirección
INADDR_BROADCAST.
Una cadena de longitud cero, que especifica INADDR_ANY, o
Un entero, interpretado como una dirección binaria en orden de bytes del
host.
55
Puerto
Cada servidor escucha a los clientes que llaman a uno o más puertos. Un puerto
puede ser un número de puerto Fixnum, una cadena que contiene un número de
puerto o el nombre de un servicio.
El zócalo módulo
Para crear un socket, debe usar la función socket.socket () disponible en
el módulo de socket , que tiene la sintaxis general:
s = socket.socket (socket_family, socket_type, protocol=0)
Aquí está la descripción de los parámetros:
socket_family : es AF_UNIX o AF_INET, como se explicó anteriormente.
socket_type : es SOCK_STREAM o SOCK_DGRAM.
protocolo : esto generalmente se omite, por defecto a 0.
Una vez que tenga un objeto de socket , puede usar las funciones requeridas
para crear su programa cliente o servidor. La siguiente es la lista de funciones
requeridas:
1
s.bind ()
Este método une la dirección (nombre de host, par de número de puerto) al
socket.
2
s.listen ()
Este método configura e inicia el escucha TCP.
3
acepto ()
Esto acepta pasivamente la conexión del cliente TCP, esperando hasta que
llegue la conexión (bloqueo).
1
s.recv ()
Este método recibe un mensaje TCP
2
enviar ()
Este método transmite mensajes TCP
3
s.recvfrom ()
Este método recibe un mensaje UDP
44
s.sendto ()
Este método transmite mensajes UDP
55
s.close ()
Este método cierra el zócalo
66
socket.gethostname ()
Devuelve el nombre de host.
Un servidor simple
Para escribir servidores de Internet, utilizamos la función de socket disponible
en el módulo de socket para crear un objeto de socket. Un objeto de socket se
usa para llamar a otras funciones para configurar un servidor de socket.
Ahora llame a la función de enlace (nombre de host, puerto) para especificar
un puerto para su servicio en el host dado.
Luego, llame al método accept del objeto devuelto. Este método espera hasta
que un cliente se conecta al puerto que especificó y luego devuelve un objeto
de conexión que representa la conexión a ese cliente.
#!/usr/bin/python # This is server.py file
Un cliente simple
Escribamos un programa cliente muy simple que abra una conexión a un
puerto 12345 dado y al host dado. Esto es muy simple para crear un cliente de
socket utilizando la función de módulo de socket de Python .
El Socket.connect (hosname, puerto) abre una conexión TCP con el nombre
de host en el puerto . Una vez que tenga un socket abierto, puede leerlo como
cualquier objeto IO. Cuando termine, recuerde cerrarlo, ya que cerraría un
archivo.
El siguiente código es un cliente muy simple que se conecta a un host y puerto
determinados, lee los datos disponibles del socket y luego sale:
#!/usr/bin/python # This is client.py file
s.connect((host, port))
print s.recv(1024)
s.close() # Close the socket when done
Ahora ejecute este server.py en segundo plano y luego ejecute por encima de
client.py para ver el resultado.
# Following would start a server in background.
$ python server.py &
Lecturas adicionales
Este fue un comienzo rápido con la programación de sockets. Es un tema
vasto. Se recomienda pasar por el siguiente enlace para encontrar más
detalles:
Programación de socket Unix .
Python Socket Library y Módulos .
Ejemplo
Aquí hay una manera simple de enviar un correo electrónico usando el script
Python. Pruébalo una vez
#!/usr/bin/python
import smtplib
sender = '[email protected]'
receivers = ['[email protected]']
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: SMTP e-mail test
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
Ejemplo
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
Ejemplo
import smtplib
import base64
filename = "/tmp/test.txt"
sender = '[email protected]'
reciever = '[email protected]'
marker = "AUNIQUEMARKER"
body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)
%s
--%s
""" % (body,marker)
%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, reciever, message)
print "Successfully sent email"
except Exception:
print "Error: unable to send email"
Ejemplo
#!/usr/bin/python
import thread
import time
while 1:
pass
Cuando se ejecuta el código anterior, produce el siguiente resultado:
Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009
Aunque es muy efectivo para subprocesos de bajo nivel, el módulo
de subprocesos es muy limitado en comparación con el módulo de
subprocesos más nuevo.
El módulo de subprocesos
El módulo de subprocesos más nuevo incluido con Python 2.4 proporciona un
soporte de subprocesos mucho más potente que el módulo de subprocesos
discutido en la sección anterior.
El módulo de subprocesos expone todos los métodos del módulo
de subprocesos y proporciona algunos métodos adicionales:
threading.activeCount () : devuelve el número de objetos de subproceso que
están activos.
threading.currentThread () - Devuelve el número de objetos de hilo en el control
de hilo del llamador.
threading.enumerate () - Devuelve una lista de todos los objetos de hilo que
están actualmente activos.
Además de los métodos, el módulo de subprocesos tiene la clase Thread que
implementa subprocesos. Los métodos proporcionados por
la clase Thread son los siguientes:
run () : el método run () es el punto de entrada para un hilo.
start () - El método start () inicia un hilo llamando al método run.
join ([time]) : la join () espera a que finalicen los subprocesos.
isAlive () - El método isAlive () verifica si un hilo todavía se está ejecutando.
getName () : el método getName () devuelve el nombre de un hilo.
setName () - El método setName () establece el nombre de un hilo.
Ejemplo
#!/usr/bin/python
import threading
import time
exitFlag = 0
Hilos de sincronización
El módulo de subprocesos provisto con Python incluye un mecanismo de
bloqueo fácil de implementar que le permite sincronizar subprocesos. Se crea
un nuevo bloqueo llamando al método Lock () , que devuelve el nuevo
bloqueo.
El método de adquisición (bloqueo) del nuevo objeto de bloqueo se utiliza para
forzar que los subprocesos se ejecuten sincrónicamente. El parámetro
de bloqueo opcional le permite controlar si el hilo espera para adquirir el
bloqueo.
Si el bloqueo se establece en 0, el subproceso vuelve inmediatamente con un
valor 0 si no se puede obtener el bloqueo y con un 1 si se adquirió el
bloqueo. Si el bloqueo se establece en 1, el hilo se bloquea y espera a que se
libere el bloqueo.
El método release () del nuevo objeto de bloqueo se utiliza para liberar el
bloqueo cuando ya no es necesario.
Ejemplo
#!/usr/bin/python
import threading
import time
threadLock = threading.Lock()
threads = []
Ejemplo
#!/usr/bin/python
import Queue
import threading
import time
exitFlag = 0
¿Qué es el XML?
El Lenguaje de marcado extensible (XML) es un lenguaje de marcado muy
parecido a HTML o SGML. Esto lo recomienda el Consorcio World Wide Web
y está disponible como un estándar abierto.
XML es extremadamente útil para realizar un seguimiento de pequeñas y
medianas cantidades de datos sin requerir una red troncal basada en SQL.
Arquitecturas y API de XML Parser
La biblioteca estándar de Python proporciona un conjunto mínimo pero útil de
interfaces para trabajar con XML.
Las dos API para datos XML más básicas y ampliamente utilizadas son las
interfaces SAX y DOM.
API simple para XML (SAX) : aquí, registra devoluciones de llamada para
eventos de interés y luego deja que el analizador continúe con el documento. Esto
es útil cuando sus documentos son grandes o tiene limitaciones de memoria,
analiza el archivo a medida que lo lee desde el disco y el archivo completo nunca
se almacena en la memoria.
API del Modelo de Objetos del Documento (DOM) : esta es una recomendación
del Consorcio de la World Wide Web en la que todo el archivo se lee en la
memoria y se almacena en un formulario jerárquico (basado en un árbol) para
representar todas las características de un documento XML.
SAX obviamente no puede procesar la información tan rápido como DOM
cuando trabaja con archivos grandes. Por otro lado, el uso exclusivo de DOM
realmente puede matar sus recursos, especialmente si se usa en muchos
archivos pequeños.
SAX es de solo lectura, mientras que DOM permite cambios en el archivo
XML. Dado que estas dos API diferentes literalmente se complementan entre
sí, no hay ninguna razón por la que no pueda usarlas para proyectos grandes.
Para todos nuestros ejemplos de código XML, usemos un archivo XML
simple movies.xml como entrada:
<collection shelf="New Arrivals">
<movie title="Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
<movie title="Transformers">
<type>Anime, Science Fiction</type>
<format>DVD</format>
<year>1989</year>
<rating>R</rating>
<stars>8</stars>
<description>A schientific fiction</description>
</movie>
<movie title="Trigun">
<type>Anime, Action</type>
<format>DVD</format>
<episodes>4</episodes>
<rating>PG</rating>
<stars>10</stars>
<description>Vash the Stampede!</description>
</movie>
<movie title="Ishtar">
<type>Comedy</type>
<format>VHS</format>
<rating>PG</rating>
<stars>2</stars>
<description>Viewable boredom</description>
</movie>
</collection>
El método make_parser
El siguiente método crea un nuevo objeto analizador y lo devuelve. El objeto
analizador creado será del primer tipo de analizador que encuentre el sistema.
xml.sax.make_parser( [parser_list] )
Aquí está el detalle de los parámetros:
parser_list : el argumento opcional que consiste en una lista de analizadores para
usar que debe implementar el método make_parser.
El método de análisis
El siguiente método crea un analizador SAX y lo usa para analizar un
documento.
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Aquí está el detalle de los parámetros:
xmlfile : este es el nombre del archivo XML para leer.
contenthandler : debe ser un objeto ContentHandler.
errorhandler : si se especifica, errorhandler debe ser un objeto SAX ErrorHandler.
El método parseString
Hay un método más para crear un analizador SAX y analizar la cadena
XML especificada .
xml.sax.parseString(xmlstring, contenthandler[,
errorhandler])
Aquí está el detalle de los parámetros:
xmlstring : este es el nombre de la cadena XML para leer.
contenthandler : debe ser un objeto ContentHandler.
errorhandler : si se especifica, errorhandler debe ser un objeto SAX ErrorHandler.
Ejemplo
#!/usr/bin/python
import xml.sax
if ( __name__ == "__main__"):
# create an XMLReader
parser = xml.sax.make_parser()
# turn off namepsaces
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
parser.parse("movies.xml")
type = movie.getElementsByTagName('type')[0]
print "Type: %s" % type.childNodes[0].data
format = movie.getElementsByTagName('format')[0]
print "Format: %s" % format.childNodes[0].data
rating = movie.getElementsByTagName('rating')[0]
print "Rating: %s" % rating.childNodes[0].data
description = movie.getElementsByTagName('description')[0]
print "Description: %s" % description.childNodes[0].data
Programación Tkinter
Tkinter es la biblioteca GUI estándar para Python. Python cuando se combina
con Tkinter proporciona una manera rápida y fácil de crear aplicaciones
GUI. Tkinter proporciona una potente interfaz orientada a objetos para el kit de
herramientas Tk GUI.
Crear una aplicación GUI usando Tkinter es una tarea fácil. Todo lo que
necesita hacer es realizar los siguientes pasos:
Importe el módulo Tkinter .
Cree la ventana principal de la aplicación GUI.
Agregue uno o más de los widgets mencionados anteriormente a la aplicación
GUI.
Ingrese el bucle principal del evento para tomar medidas contra cada evento
activado por el usuario.
Ejemplo
#!/usr/bin/python
import Tkinter
top = Tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()
Esto crearía una siguiente ventana:
Tkinter Widgets
Tkinter proporciona varios controles, como botones, etiquetas y cuadros de
texto utilizados en una aplicación GUI. Estos controles se denominan
comúnmente widgets.
Actualmente hay 15 tipos de widgets en Tkinter. Presentamos estos widgets,
así como una breve descripción en la siguiente tabla:
No Operador y Descripción
Señor.
1 Botón
2 Lona
El widget Canvas se usa para dibujar formas, como líneas, óvalos, polígonos y
rectángulos, en su aplicación.
3 Botón de control
El widget Checkbutton se usa para mostrar una serie de opciones como casillas
de verificación. El usuario puede seleccionar múltiples opciones a la vez.
44 Entrada
El widget Entrada se usa para mostrar un campo de texto de una sola línea para
aceptar valores de un usuario.
55 Marco
El widget Frame se usa como widget contenedor para organizar otros widgets.
66 Etiqueta
El widget de etiqueta se utiliza para proporcionar un título de línea única para
otros widgets. También puede contener imágenes.
77 Cuadro de lista
El widget Listbox se usa para proporcionar una lista de opciones a un usuario.
8 Botón de menú
El widget Menubutton se usa para mostrar menús en su aplicación.
99 Menú
El widget Menú se usa para proporcionar varios comandos a un usuario. Estos
comandos están contenidos dentro de Menubutton.
10 Mensaje
El widget Mensaje se usa para mostrar campos de texto de varias líneas para
aceptar valores de un usuario.
11 Boton de radio
El widget Radiobutton se usa para mostrar una serie de opciones como botones
de radio. El usuario puede seleccionar solo una opción a la vez.
12 Escala
El widget Escala se usa para proporcionar un widget deslizante.
13 Barra de desplazamiento
El widget Barra de desplazamiento se usa para agregar capacidad de
desplazamiento a varios widgets, como cuadros de lista.
14 Texto
El widget de texto se usa para mostrar texto en varias líneas.
15 Nivel superior
El widget Toplevel se usa para proporcionar un contenedor de ventana separado.
dieciséis Spinbox
El widget Spinbox es una variante del widget Tkinter Entry estándar, que se
puede usar para seleccionar entre un número fijo de valores.
17 PanedWindow
Un PanedWindow es un widget contenedor que puede contener cualquier
número de paneles, dispuestos horizontal o verticalmente.
18 años LabelFrame
Un labelframe es un widget contenedor simple. Su propósito principal es actuar
como un espaciador o contenedor para diseños complejos de ventanas.
19 tkMessageBox
Este módulo se utiliza para mostrar cuadros de mensaje en sus aplicaciones.
Atributos estándar
Echemos un vistazo a cómo se especifican algunos de sus atributos comunes,
como los tamaños, los colores y las fuentes.
Dimensiones
Colores
Fuentes
Anclas
Estilos de relieve
Mapas de bits
Cursores
Vamos a estudiarlos brevemente.
Geometry Management
Todos los widgets de Tkinter tienen acceso a métodos específicos de
administración de geometría, que tienen el propósito de organizar los widgets
en toda el área de widgets principal. Tkinter expone las siguientes clases de
administrador de geometría: paquete, cuadrícula y lugar.
El pack () Método - Este gestor de la geometría organiza widgets en bloques antes
de colocarlos en el widget padre.
El método grid () : este administrador de geometría organiza widgets en una
estructura similar a una tabla en el widget principal.
El método place () : este administrador de geometría organiza los widgets
colocándolos en una posición específica en el widget principal.
Estudiemos brevemente los métodos de gestión de la geometría.
Las funciones C
Las firmas de la implementación en C de sus funciones siempre toman una de
las siguientes tres formas:
static PyObject *MyFunction( PyObject *self, PyObject *args
);
Ejemplo
La función de inicialización
La última parte de su módulo de extensión es la función de inicialización. El
intérprete de Python llama a esta función cuando se carga el módulo. Se
requiere que la función se llame init Module , donde Module es el nombre del
módulo.
La función de inicialización debe exportarse desde la biblioteca que
construirá. Los encabezados de Python definen PyMODINIT_FUNC para
incluir los encantamientos apropiados para que eso suceda para el entorno
particular en el que estamos compilando. Todo lo que tiene que hacer es
usarlo al definir la función.
Su función de inicialización de C generalmente tiene la siguiente estructura
general:
PyMODINIT_FUNC initModule() {
Py_InitModule3(func, module_methods, "docstring...");
}
Aquí está la descripción de la función Py_InitModule3 :
func : esta es la función que se exportará.
module _methods : este es el nombre de la tabla de asignación definida
anteriormente.
docstring : este es el comentario que desea dar en su extensión.
Poniendo todo esto junto se ve así:
#include <Python.h>
PyMODINIT_FUNC initModule() {
Py_InitModule3(func, module_methods, "docstring...");
}
Ejemplo
void inithelloworld(void) {
Py_InitModule3("helloworld", helloworld_funcs,
"Extension module example!");
}
Importando Extensiones
Una vez que haya instalado su extensión, podrá importar y llamar a esa
extensión en su script de Python de la siguiente manera:
#!/usr/bin/python
import helloworld
print helloworld.helloworld()
Esto produciría el siguiente resultado:
Hello, Python extensions!!
La tabla de métodos que contiene una entrada para la nueva función se vería
así:
static PyMethodDef module_methods[] = {
{ "func", (PyCFunction)module_func, METH_NOARGS, NULL },
{ "func", module_func, METH_VARARGS, NULL },
{ NULL, NULL, 0, NULL }
};
Puede usar la función API PyArg_ParseTuple para extraer los argumentos del
puntero PyObject pasado a su función C.
El primer argumento para PyArg_ParseTuple es el argumento args. Este es el
objeto que analizará . El segundo argumento es una cadena de formato que
describe los argumentos tal como espera que aparezcan. Cada argumento
está representado por uno o más caracteres en la cadena de formato de la
siguiente manera.
static PyObject *module_func(PyObject *self, PyObject *args)
{
int i;
double d;
char *s;
La función PyArg_ParseTuple
Aquí está la firma estándar para la función PyArg_ParseTuple :
int PyArg_ParseTuple(PyObject* tuple,char* format,...)
Esta función devuelve 0 para errores y un valor no igual a 0 para el éxito. tupla
es el PyObject * que fue el segundo argumento de la función C. Aquí
el formato es una cadena C que describe argumentos obligatorios y
opcionales.
Aquí hay una lista de códigos de formato para la función PyArg_ParseTuple :
(...) según ... Una secuencia de Python se trata como un argumento por
elemento.
Valores devueltos
Py_BuildValue toma una cadena de formato muy similar
a PyArg_ParseTuple . En lugar de pasar las direcciones de los valores que
está creando, pasa los valores reales. Aquí hay un ejemplo que muestra cómo
implementar una función de agregar:
static PyObject *foo_add(PyObject *self, PyObject *args) {
int a;
int b;
La función Py_BuildValue
Aquí está la firma estándar para la función Py_BuildValue :
PyObject* Py_BuildValue(char* format,...)
Aquí el formato es una cadena C que describe el objeto Python a
construir. Los siguientes argumentos de Py_BuildValue son valores C a partir
de los cuales se construye el resultado. El resultado de PyObject * es una
nueva referencia.
La siguiente tabla enumera las cadenas de código de uso común, de las
cuales cero o más se unen en formato de cadena.
[...] según ... Crea una lista de Python a partir de los valores de C.