Plantilla de Excel con web de bolsa vinculada para tener tus valores actualizados al momento.
Mes: marzo 2019
Ficheros CSV separados por comas
Vamos a ver desde la introducción de datos en los referidos ficheros hasta varias formas de leer los mismos.
Empezaremos creando el fichero.
#!/usr/bin/python
#
# Nos crea un fichero -csv-. Introducimos fichero y extension
#
fichero_nuevo = raw_input("Introduce el nombre y la extension del fichero a crear: ")
archivo = open(fichero_nuevo, "w")
print "El archivo se ha creado correctamente"
archivo.close
print
La salida sería:
Introduce el nombre y la extension del fichero a crear: fichero_nuevo.csv
El archivo se ha creado correctamente.
Si hacemos un listado de ficheros del directorio (ls -l) nos damos cuenta de que
ha creado el fichero "fichero_nuevo.csv"
Una vez creado el fichero, vamos a introducir datos
Creamos un script para ello.
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
pregunta = raw_input("Desea Introducir Datos [s/n]: ")
while pregunta == "s":
archivo = open("fichero_nuevo.csv", "a")
factura = raw_input("Introduce Factura: ")
producto = raw_input("Introduce Producto: ")
cantidad = raw_input("Introduce Cantidad: ")
precio = raw_input("Introduce Precio: ")
peso = raw_input("Introduce Peso: ")
ano = raw_input("Introduce Ano: ")
archivo.write(factura)
archivo.write(",")
archivo.write(producto)
archivo.write(",")
archivo.write(cantidad)
archivo.write(",")
archivo.write(precio)
archivo.write(",")
archivo.write(peso)
archivo.write(",")
archivo.write(ano)
archivo.write("\n")
archivo.close()
pregunta = raw_input("Desea seguir Introduciendo Datos [s/n]: ")
print "Adios"
print
Una vez introducidos los datos, vamos a leerlos de varias formas, según nos interese para hacer un tipo de algoritmo u otro.
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Nos lee todo el archivo como si hicieses un -cat-"
print
with open("fichero_nuevo.csv", "r") as archivo:
print archivo.read()
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Lee cada fila del archivo EN FORMA DE LISTA y separada por comas"
print
with open("fichero_nuevo.csv", "r") as archivo:
lineas = archivo.read().splitlines()
print lineas
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Lee cada fila del archivo separada por comas MENOS EL ENCABEZAMIENTO"
print
with open("fichero_nuevo.csv", "r") as archivo:
lineas = archivo.read().splitlines()
lineas.pop(0) # ESTA LINEA ES PARA NO IMPRIMIR EL ENCABEZAMIENTO (LA PRIMERA LINEA)
print lineas
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Lee cada fila del archivo separada por comas EN FORMA DE LISTA"
print
with open("fichero_nuevo.csv", "r") as archivo:
lineas = archivo.read().splitlines()
lineas.pop(0) # NO IMPRIMIR EL ENCABEZAMIENTO
for l in lineas:
linea = l.split(",")
print linea
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Lee de varias formas. Elegimos dos o tres columnas del archivo (con indices), por ejemplo Cantidad, Precio, Peso, etc. y te lee las columnas elegidas EN FORMA DE LISTA y modo normal o decimales, MENOS EL ENCABEZAMIENTO."
print
datos = []
datos1 = []
datos2 = []
datos3 = []
with open("fichero_nuevo", "r") as archivo:
lineas = archivo.read().splitlines()
lineas.pop(0)
for l in lineas:
linea = l.split(",")
datos.append([float(linea[2]), float(linea[3])]) # PONGO -float- PORQUE QUIERO LEER DECIMALES
datos1.append([(linea[1]), (linea[2]), (linea[3])])
datos2.append([(linea[1]), float(linea[2]), float(linea[3])]) # LEE LISTA Y DECIMALES
datos3.append([(linea[0]), float(linea[2]), (linea[3]), float(linea[4])])
print "Leera una lista de dos columnas con decimales"
print datos
print "Leera una lista de tres columnas sin decimales"
print datos1
print "Leera una lista de tres columnas sin y con decimales"
print datos2
print "Leera una lista de cuatro columnas - sin - con - sin - con - decimales"
print datos3
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Lee las dos columnas elegidas (Cantidad y Precio) en forma de lista normal y ordenadas CON DECIMALES. NO LEE ENCABEZAMIENTO."
print
datos = []
with open("fichero_nuevo.csv", "r") as archivo:
lineas = archivo.read().splitlines()
lineas.pop(0)
for l in lineas:
linea = l.split(",")
datos.append([float(linea[2]), float(linea[3])])
x = []
y = []
for elem in (datos): # LEE DE MANERA NORMAL
x.append(elem[0])
y.append(elem[1])
print "Leera de manera desordenada"
print x
print y
a = []
b = []
for elem in sorted(datos): # LA ORDEN -sorted- ORDENA DE MENOR A MAYOR
a.append(elem[0])
b.append(elem[1])
print "Leera de manera ordenada"
print a
print b
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Trabajo con -csv.reader- y -delimiter-. Lee columnas -Producto- y -Precio-."
print "Lee el archivo con el modulo -csv- y lo imprime en forma de texto normal"
print
import csv
with open("fichero_nuevo.csv", "r") as file:
# reader = csv.reader(file) # NOS LEE LA TOTALIDAD DEL ARCHIVO
reader = csv.reader(file, delimiter = ',')
for row in reader:
print row # LEE ARCHIVO FORMA DE LISTA CON SUS COLUMNAS
print row[0] # LEE ARCHIVO CON SI FUERA CON -cat-
print row[1] # LEE COLUMNA 2 INDICE 1
print row[1],row[3]
print row[1],'-',row[3]
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Trabajo con -csv-reader-, -delimiter-, -quotechar- y -quoting-. Lee -Producto- y -Cantidad-."
print "Lee archivo con el modulo -csv- e imprime las filas que indico en forma normal."
print
import csv
with open("fichero_nuevo.csv", "r") as file:
reader = csv.reader(file, delimiter=',', quotechar=',', quoting=csv.QUOTE_MINIMAL)
for row in reader:
print row[0] # LEE LA COLUMNA 1 INDICE 0
print row[1] # IMPRIME COLUMNA 2 INDICE 1
print row[2] # IMPRIME COLUMNA 3 INDICE 2
print row[2],row[3] # IMPRIME LAS DOS COLUMNAS INDICADAS
print row[2],['-'] # IMPRIME INDICE 2 CON CORCHETES Y RAYA
print row[1],'-',row[2]
print
#!/usr/bin/python
# -*- coding: utf-8 -*-
print
print "Trabajo con -DictReader- y -delimiter-. Delimitamos columnas por nombre en lugar de indice."
print "Lee el archivo e imprime las columnas -Factura-, -Producto-, -Cantidad- y -Año-."
print
import csv
with open("fichero_nuevo.csv") as csvfile:
reader = csv.DictReader(csvfile, delimiter = ',')
for row in reader:
# print row['Factura'] # LEERA LA COLUMNA FACTURA
print row['Factura'],'-',row['Producto'],'-',row['Cantidad'],'-',row['Ano']
print
#!/usr/bin/python
#
# NORMALMENTE FUNCIONA BIEN PERO A VECES FALLA, CREO POR EL ANCHO DE COLUMNA SEGUN EL DATO QUE METAS.
# MUCHO CUIDADO EN LAS DELIMITACIONES. SI HAS DELIMITADO TU ARCHIVO -csv- MEDIANTE (-;-) TU -delimiter- DEBERA INDICAR (-;-)
# SI LO HAS HECHO POR COMAS (-,-) EL -delimiter- DEBERA SER COMA.
print
print "Lee el archivo tabuladamente."
print
import csv
archivo = open("fichero_nuevo.csv", "rb")
leer_archivo = csv.reader(archivo, delimiter=',')
for fila in leer_archivo:
print ("\t ".join(fila)) # IR PROBANDO CON LA TABULACION
print (" \t ".join(fila))
print (" \t ".join(fila)) # ESTA PARECE BUENA
print (" \t "" \t ".join(fila))
archivo.close()
# COMO HE DICHO, DEPENDE DEL ANCHO DE LOS DATOS QUE METAS EN LAS CASILLAS
Estas son diversas formas de leer ficheros csv, desde las mas simples hasta algunas un poco mas complejas. Ya cada uno debe elegir la que se adapte a sus necesidades.
Teorema de Pitágoras
Pequeño script que te haya la hipotenusa de un triángulo.
#!/bin/bash
#
#
echo TEOREMA DE PITAGORAS
echo ====================
echo INTRODUCE EL CATETO A
read a
echo INTRODUCE EL CATETO B
read b
c=$(echo "sqrt($a^2 + $b^2)" |bc -l)
echo
echo LA HIPOTENUSA VALE $c
La salida sería:
TEOREMA DE PITAGORAS
INTRODUCE EL CATETO A
4
INTRODUCE EL CATETO B
5
LA HIPOTENUSA VALE: 6.40312423743284868648
Función (Case – Esac) en Bash
Script muy sencillo que nos explica los comandos -case- y -esac- para elegir entre una variedad de opciones.
#!/bin/bash
#
# EL SCRIPT SIMPLEMENTE NOS EXPLICA LA FUNCION DE -CASE- Y NOS DA A ELEGIR UNA OPCION.
#
alumnos()
{
echo "\n\n ********ALUMNOS*********"
sleep 2
exit
}
asignaturas()
{
echo "\n\n ********ASIGNATURAS*******"
sleep 2
exit
}
calificaciones()
{
echo "\n\n *******CALIFICACIONES********"
sleep 2
exit
}
docentes()
{
echo "\n\n ********DOCENTES***********"
sleep 2
exit
}
echo "ESCUELA DE ESTUDIOS MATEMATICOS"
echo
echo "1) Docentes"
echo "2) Alumnos"
echo "3) Asignaturas"
echo "4) Calificaciones"
echo "5) Salir"
echo
echo -n "INGRESE UNA OPCION:"
#read opcion
a=0
while [ $a != 1 ]
do
read opcion
case $opcion in # PRINCIPIO DE LA ESTRUCTURA -CASE-
1) docentes
;;
2) alumnos
;;
3) asignaturas
;;
4) calificaciones
;;
5) echo "SALIENDO"
sleep 3 # TIEMPO DE REACCION
exit # SALIDA DEL BUCLE
;;
*) echo -n "LA OPCION NO ES VALIDA"
#
a=0
#
;;
esac # FIN DE LA ESTRUCTURA -ESAC-
done
La salida sería:
ESCUELA DE MATEMATICAS
1) Docentes
2) Alumnos
3) Asignaturas
4) Calificaciones
5) Salir
INGRESE UNA OPCION: (Ingresamos p.ej. la opcion 1)
\n\n DOCENTES***
Cifrado Vigenère
El método original fue descrito por Giovan Battista Belasso en su libro de 1553 La cifra del Sig. Giovan Battista Belasso. Sin embargo, fue incorrectamente atribuido más tarde a Blaise de Vigenère, concretamente en el siglo XIX, y por ello aún se le conoce como el «cifrado Vigenère».
#!/usr/bin/python
#-*- coding: utf-8 -*-
#
abc = "abcdefghijklmnopqrstuvwxyz "
def cifrar(cadena, clave): # FUNCION CIFRADO
text_cifrar = ""
i = 0
for letra in cadena:
suma = abc.find(letra) + abc.find(clave[i % len(clave)])
modulo = int(suma) % len(abc)
text_cifrar = text_cifrar + str(abc[modulo])
i = i + 1
return text_cifrar
def descifrar(cadena, clave):
text_cifrar = ""
i = 0
for letra in cadena:
suma = abc.find(letra) - abc.find(clave[i % len(clave)])
modulo = int(suma) % len(abc)
text_cifrar = text_cifrar + str(abc[modulo])
i = i + 1
return text_cifrar
def main():
c = str(raw_input("Introduce cadena a cifrar: ")).lower()
clave = str(raw_input("Introduce clave: ")).lower()
print cifrar(c, clave)
print
c = str(raw_input("Introduce cadena a descifrar: ")).lower()
clave = str(raw_input("Introduce clave: ")).lower()
print descifrar(c, clave)
print
if __name__ == "__main__":
main()
El resultado sería el siguiente:
Introduce cadena a cifrar: cifrado de giovan battista belasso
Introduce clave: python
rfyyoqcxwlntxlnhamqyl wehysisyppkv
Introduce cadena a descifrar: rfyyoqcxwlntxlnhamqyl wehysisyppkv
Introduce clave: python
cifrado de giovan battista belasso
Tabla de Vigenère

Factorial de un número
El siguiente programilla nos daría el factorial de cualquier número.
#!/usr/bin/python
#
# SCRIPT QUE NOS DA EL FACTORIAL DE UN NUMERO
# INTRODUCE UN NUMERO Y HALLA SU FACTORIAL
# FORMULA: 0! = 1
# n! = n * (n - 1)!
def factorial(n):
if n == 0:
return 1
else: # SI ES VALOR DISTINTO A 0...
recursivo = factorial(n-1) # OBTEN EL FACTORIAL DEL NUMERO ANTERIOR
resultado = n * recursivo # MULTIPLICALO POR EL VALOR DADO
return resultado
x = input("Introduce un numero para hallar su factorial: ")
print factorial(x)
Hola Mundo
#!/usr/bin/python
#
print "Hola Mundo"
Este es el primer programa que se aprende en cualquier lenguaje.
Evidentemente, la salida es: Hola Mundo
Mi primer script. El primer script de todo el mundo.
División entre dos números
El siguiente programa es también muy sencillito. Se trata de una simple división entre dos números ya introducidos con anterioridad. En este caso serían el 6 y el 2.
#!/usr/bin/python
#
# SIMPLE FUNCION QUE DIVIDE DOS NUMEROS
a = 6
b = 2
def division(a, b):
print a/b
division(a, b) # LLAMAMOS A LA FUNCION
Llamando a la función, el resultado nos daría 3.
Calculadora básica
Esto es una calculadora muy sencillita que te pedirá que ingreses 3 números y te hace la operación que deseas hacer, en este caso una suma.
#!/usr/bin/python
#
# EL EJEMPLO MAS BASICO DE CALCULADORA
a = input('Introduce primer numero: ')
b = input('Introduce segundo numero: ')
c = input('Introduce tercer numero: ')
print 'La suma de los tres numeros introducidos es: ' , a + b + c
La salida es:
Primero te pedirá que introduzcas tres números.
Pongamos por caso que introducimos tres veces el número 5
Luego te dirá: La suma de los tres números introducidos es: 15 (5+5+5)
Y a partir de este modelo básico, a complicar las cosas.
