Universidad de Costa Rica

Universidad de Costa Rica Facultad de Ingenieria Escuela de Ingenieria Electrica Programacion Bajo Plataformas Abiertas IE-0117 I CICLO 2012 Laborator

3 downloads 50 Views 100KB Size

Recommend Stories


UNIVERSIDAD DE COSTA RICA
UNIVERSIDAD DE COSTA RICA Instituto de Estudios Centroamericanos ANTECEDENTES DE LA INDEPENDENCIADE COSTA RICA Mario Zaragoza Aguado 1973 227 VI

Universidad de Costa Rica
Universidad de Costa Rica Sede Central Ciudad Universitaria Rodrigo Facio Vicerrectoría de Acción Social Sección de Trabajo Comunal: Soluciones Energ

UNIVERSIDAD DE COSTA RICA
RedSismológicaNacional (RSN: UCR-ICE) UNIVERSIDAD DE COSTA RICA ESCUELA CENTROAMERICANA DE GEOLOGÍA RED SISMOLÓGICA NACIONAL (RSN) CENTRO DE INVESTI

Story Transcript

Universidad de Costa Rica Facultad de Ingenieria Escuela de Ingenieria Electrica Programacion Bajo Plataformas Abiertas IE-0117 I CICLO 2012 Laboratorio 10 Sebastian Sotela Golcher B16455

1.

100 Muy bien!

Aspectos generales

En este laboratorio se aprendio a usar funciones de sistema. Al principio se utilizo el modulo subprocess pero se tuvo muchos problemas por lo que se opto por glob. Definitivamente la mas util de las funciones fue path.walk() del modulo os ya que define una recursion completa a traves de un directorio. Es bueno trabajar con archivos .txt ya que no presentan ninguna clase de problemas con codificacion por ejemplo. El modulo que mas se uso en esta asignacion fue el os. A continuacion se presenta lo que se hizo en cada laboratorio bien comentado.

2.

Parte 1

# ! / u s r / b i n / python # −∗− coding : l a t i n −1 −∗− #Modulos ocupados en e l programa import math import sys # e s t e modulo s i r v e para e f e c t u a r f u n c i o n e s de sistema import os ####################################################################################### # d e f i n e un metodo que l e e una l i s t a de numeros y l a ordena de manera ascendente o #descendente def o r d e n a l i s t a s ( ) : #se abre , y s i no e x i s t e se crea , un a r c h i v o con e l nombre d e l segundo #argumento , para e s c r i b i r sobre e l datos = open ( sys . argv [ 1 ] , ’ r ’ ) # se d e f i n e l a opcion de ordenar l i s t a s como e l t e r c e r argumento opcion = sys . argv [ 2 ] # i n i c i a l i z a una l i s t a v a c i a lista = [] #se i t e r a a t r a v e s de l a s l i n e a s d e l a r c h i v o hasta que en e s t a s no se l e a nada while True : # devuelve e l v a l o r de una l i n e a y mueve l a p o s i c i o n d e l p u n t e r o elemento = datos . r e a d l i n e ( ) # s i l a l i n e a t i e n e a l g o e s c r i t o se agreg a l a l i s t a , ademas de # transformarlo a entero i f elemento : l i s t a . append ( i n t ( elemento ) ) # s i l a l i n e a no t i e n e nada se s a l e d e l c i c l o else : break

Universidad de Costa Rica Facultad de Ingenieria Escuela de Ingenieria Electrica Programacion Bajo Plataformas Abiertas IE-0117 I CICLO 2012 Laboratorio 10 Sebastian Sotela Golcher B16455

# c i e r r el archivo datos . c l o s e ( ) #ordena l a l i s t a de manera ascendente l i s t a . sort () # S i l a opcion es ascendente se imprime l a l i s t a como e s t a i f opcion == ’ a ’ : return l i s t a # s i l a opcion es descendente se i n v i e r t e e l orden de l a l i s t a con l a # funcion reverse e l i f opcion == ’ d ’ : l i s t a . reverse ( ) return l i s t a # S i no se i n t r o d u c e un argumento v a l i d o se imprime un e r r o r en p a n t a l l a y # f i n a l i z a e l programa else : p r i n t " E r r o r : argumento i n v a l i d o \ n NOTA: E l t e r c e r argumento c o n t i e n e l a s opciones ’ a ’ para ascendente y ’ d ’ para descendente " sys . e x i t ( 1 ) # d e f i n e una f u n c i o n que crea un nuevo a r c h i v o con l a l i s t a ordenada def ArchivoOrdenado ( ) : # o b t i e n e l a s a l i d a de l a f u n c i o n a n t e r i o r listaordenada = ordenalistas ( ) #abre , o crea s i no e x i s t e , un a r c h i v o para e s c r i b i r sobre e l archivo_ordenado =open ( ’ l i s t a _ o r d e n a d a . t x t ’ , ’w ’ ) # i t e r a a t r a v e s de l a l i s t a ordenada for x in listaordenada : #se imprime en e l a r c h i v o cada elemento de l a l i s t a p r i n t >>archivo_ordenado , " %d \ n " %(x ) # cierra el archivo archivo_ordenado . c l o s e ( ) # imprime un mensaje de e x i t o p r i n t "Ha creado un a r c h i v o d e l c o n t e n i d o de %s ordenado de manera opcion = %s " %(sys . argv [ 1 ] , sys . argv [ 2 ] ) ################################################Programa P r i n c i p a l ################## #se deben i n t r o d u c i r 3 argumentos para que e l programa c o r r a i f l e n ( sys . argv ) ! = 3 : p r i n t " E r r o r : Debe i n t r o d u c i r 3 argumentos : \ n Uso c o r r e c t o : %s a r c h i v o opcion " %(sys . argv [ 0 ] ) sys . e x i t ( 1 ) # V e r i f i c a que se i n t r o d u z c a una r u t a e x i s t e n t e i f os . path . e x i s t s ( sys . argv [ 1 ] ) : # s i e l segundo argumento es un a r c h i v o se procede i f os . path . i s f i l e ( sys . argv [ 1 ] ) : #LLama a l a f u n c i o n con e s t e nombre ArchivoOrdenado ( ) # s i e l argumento no es un a r c h i v o se imprime un e r r o r

Universidad de Costa Rica Facultad de Ingenieria Escuela de Ingenieria Electrica Programacion Bajo Plataformas Abiertas IE-0117 I CICLO 2012 Laboratorio 10 Sebastian Sotela Golcher B16455

else : p r i n t " E r r o r : %s no es un a r c h i v o " sys . e x i t ( 1 ) else : p r i n t " E r r o r : La r u t a s e l e c c i o n a d a no e x i s t e " sys . e x i t ( 1 )

3.

Parte 2

# ! / u s r / b i n / python # −∗− coding : l a t i n −1 −∗− #Modulos ocupados en e l programa import math import sys import os # g l o b es un modulo que me p e r m i t e l i s t a r e l c o n t e n i d o de un d i r e c t o t i o por ejemplo import g l o b ################################ Funciones ########################################### # d e f i n e una f u n c i o n que d e s p l i e g a l o s a r c h i v o s que son enlaces s i m b o l i c o s y h a c i a #adonde apuntan se d e f i n e None como v a l o r predeterminado , es d e c i r s i no se l e dan # parametros no hace nada def enlaces ( d i r e c t o r i o , a r c h i v o =None ) : # v e r i f i c a s i e l segundo argumento es un d i r e c t o r i o i f not os . path . i s d i r ( d i r e c t o r i o ) : p r i n t " E r r o r : e l segundo argumento no es un d i r e c t o r i o " #se o b t i e n e una l i s t a de todo elemento d e l d i r e c t o r i o # e l a s t e r i s c o s i m b o l i z a c u a l q u i e r cosa contenido = glob . glob ( d i r e c t o r i o +" / ∗ " ) # s i se i n t r o d u j o l a v a r i a b l e a r c h i v o : i f archivo : #se abre o se crea un a r c h i v o para e s c r i b i r sobre e l datos = open ( a r c h i v o , ’w ’ ) #se imprime en e l a r c h i v o e l t i t u l o de l a l i s t a p r i n t >> datos , " L i s t a de elementos con enlace s i m b o l i c o en e l directorio " , directorio # s i no se i n t r o d u j o l a v a r i a b l e a r c h i v o se imprime en p a n t a l l a e l t i t u l o de l a #lista else : p r i n t " L i s t a de elementos con enlace s i m b o l i c o en e l d i r e c t o r i o " , directorio # usar l a combinacion de range y l e n es u t i l para no usar contadores f o r n i n range ( l e n ( c o n t e n i d o ) ) : # e s t a f u n c i o n de os me p e r m i t e v e r i f i c a r s i e l a r c h i v o es un enlace #simbolico i f os . path . i s l i n k ( c o n t e n i d o [ n ] ) : # e s t a f u n c i o n de os o b t i e n e l a d i r e c c i o n en l a que apunta e l #link

Universidad de Costa Rica Facultad de Ingenieria Escuela de Ingenieria Electrica Programacion Bajo Plataformas Abiertas IE-0117 I CICLO 2012 Laboratorio 10 Sebastian Sotela Golcher B16455

enlace = os . r e a d l i n k ( c o n t e n i d o [ n ] ) # s i se i n t r o d u j o l a v a r i a b l e se imprime en e l a r c h i v o i f archivo : p r i n t >>datos , c o n t e n i d o [ n ] , "−−−>" , enlace # s i no se i n t r o d u j o l a v a r i a b l e se imprime e l c o n t e n i d o en # consola else : p r i n t c o n t e n i d o [ n ] , "−−−>" , enlace # para e l caso d e l a r c h i v o se c i e r r a e s t e y se imprime una n o t i f i c a c i o n de creacion i f archivo : datos . c l o s e ( ) p r i n t "Ha creado un a r c h i v o con l a l i s t a de enlaces s i m b o l i c o s d e l directorio " ########################################Programa P r i n c i p a l ######################### #se o b t i e n e l a r u t a a b s o l u t a d e l segundo argumento i n t r o d u c i d o para e l uso de # f u n c i o n e s d e l modulo os D i r e c t o r i o = os . path . abspath ( sys . argv [ 1 ] ) # s i se u t i l i z a n 2 argumentos l a f u n c i o n enlaces r e c i b e 1 i f l e n ( sys . argv ) == 2 : enlaces ( D i r e c t o r i o ) # s i se u t i l i z a n 3 argumentos l a f u n c i o n enlaces r e c i b e 2 i f l e n ( sys . argv ) == 3 : enlaces ( D i r e c t o r i o , sys . argv [ 2 ] ) # s i no se r e c i b e n l a c a n t i d a d de argumentos debida se imprime un e r r o r y f i n a l i z a # e l programa else : p r i n t " E r r o r : Se deben i n t r o d u c i r dos o t r e s argumentos \ nUso c o r r e c t o : %s d i r e c t o r i o a r c h i v o ( o p c i o n a l ) " %(sys . argv [ 0 ] )

4.

Parte 3

# ! / u s r / b i n / python # −∗− coding : l a t i n −1 −∗− #Modulos ocupados en e l programa import math import sys import os

################################ Funciones #################################################### # d e f i n e una f u n c i o n que d e s p l i e g a e l c o n t e n i d o de todos l o s a r c h i v o s de un # d i r e c t o r i o de manera r e c u r s i v a , imprime su r e s p e c t i v o tamano y e l tamano # t o t a l del d i r e c t o r i o def c o n t e n i d o D i r e c t o r i o ( D i r e c t o r i o ) : # v e r i f i c a que e l argumento sea un d i r e c t o r i o i f not os . path . i s d i r ( D i r e c t o r i o ) :

Universidad de Costa Rica Facultad de Ingenieria Escuela de Ingenieria Electrica Programacion Bajo Plataformas Abiertas IE-0117 I CICLO 2012 Laboratorio 10 Sebastian Sotela Golcher B16455

p r i n t " E r r o r : e l segundo argumento no es un d i r e c t o r i o \ n " sys . e x i t ( 1 ) #se i n i c i a l i z a e l tamano t o t a l tamanototal = 0 # t i t u l o del l i s t a d o p r i n t " Contenido t o t a l d e l d i r e c t o r i o " , D i r e c t o r i o # l a f u n c i o n walk me r e c o r r e todos l o s s u b d i r e c t o r i o s y a r c h i v o s f o r a c t u a l , d i r e c t o r i o s , a r c h i v o s i n os . walk ( D i r e c t o r i o ) : #se i t e r a a t r a v e s de todos l o s a r c h i v o s f o r arch i n a r c h i v o s : # l a f u n c i o n j o i n me p e r m i t e o b t e n e r r u t a s a b s o l u t a s # uniendo l a d i r e c c i o n d e l d i r e c t o r i o con e l nombre d e l #archivo r u t a = os . path . j o i n ( a c t u a l , arch ) # l a f u n c i o n g e t s i z e me da e l tamano de cada a r c h i v o tamano = os . path . g e t s i z e ( r u t a ) #cada uno se suma a l tamano t o t a l t a m a n o t o t a l += tamano #cada uno se imprime de l a s i g u i e n t e manera p r i n t " A r c h i v o : " , arch , "−−−>Tamano : " , tamano , " b y t e s " # a l f i n a l se imprime e l t o t a l p r i n t " E l c o n t e n i d o d e l d i r e c t o r i o t i e n e un tamano de : " , t a m a n o t o t a l , " bytes " ###########################Programa P r i n c i p a l ###################################### # v e r i f i c a que se i n t r o d u z c a n 2 argumentos i f l e n ( sys . argv ) ! = 2 : p r i n t " E r r o r : Se deben i n t r o d u c i r dos argumentos \ nUso c o r r e c t o : %s d i r e c t o r i o " %(sys . argv [ 0 ] ) sys . e x i t ( 1 ) #se o b t i e n e l a r u t a a b s o l u t a d e l argumento para e v i t a r problemas D i r e c t o r i o = os . path . abspath ( sys . argv [ 1 ] ) #Llama a l a f u n c i o n d e f i n i d previamente contenidoDirectorio ( Directorio )

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.