UF3. Fonaments de gestió de fitxers¶
A01. Llibreries¶
1.1. Exercici 1¶
Implementa l’exemple 1 de la teoria (seqüència de Fibonacci) i executa’l
1.1.1. Resposta 1¶
fibonacci.py
def fib(n):
#imprimeix per pantalla la sèrie fibonacci fins al terme "n"
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a+b
print()
def fib2(n):
#Retorna la sèrie Fibonacci fins al terme "n"
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
exercici1.py
#importo la llibreria creada
import fibonacci
#crido la funció ''fib'' amb paràmetre 1000
fibonacci.fib(1000)
#imprimeixo el resultat de la funció ''fib2'' amb paràmetre 1000
print(fibonacci.fib2(1000))
#imprimeixo el resultat del mètode ''__name__'' de la llibreria (retorna el nom d'aquesta)
print(fibonacci.__name__)
1.2. Exercici 2¶
Busca per Internet 5 llibreries de python3 que puguin ser útils per a tu.
1.2.1. Resposta 2¶
math: Afegeix funcionalitat amb operacions matemàtiques més complexes; encara que la llibreria
cmath
està preparada per a operacions més complexes. Pàgina webos: Ofereix una interfície per interactuar amb el sistema operatiu ja sigui amb comandes de terminal o altres funcions. Pàgina web
random: Funcions relacionades amb generadors de números pseudo-aleatoris, escollir ítems aleatoris de llistes, etc. Pàgina web
sys: Permet accedir a variables del propi entorn Python. Pàgina web
datetime: Incorpora classes per a treballar amb formats de data i hora. Pot servir per a formatar variables com a dates i/o hores. Pàgina web
1.3. Exercici 3¶
On podries trobar les llibreries de python al teu sistema? Utilitza la
llibreria sys
i la variable sys.path
.
1.3.1. Resposta 3¶
Per defecte, les llibreries es troben a /usr/lib/pythonx.y
(en
funció de la versió) i /usr/lib64/pythonx.y
per a les llibreries de
64 bits. On ``x.y`` correspon a la versió de Python que tinguem
instal·lada.
1.4 Exercici 4¶
Realitzar un programa amb el següent menú:
SISTEMA DE DIAGNÒSTIC RÀPID DE FALLADES EN XARXA
************************************************************************
************ MENÚ ************
1. eina PING
2. eina TRACERT
3. eina HOSTNAME
4. eina IFCONFIG
5. eina DNS
6. eina GATEWAY
Per a poder realitzar el programa necessitarem la llibreria OS. No cal utilitzar funcions per a aquest programa.
1.4.1. Resposta 4¶
exercici4.py
import os
opcio=0
while opcio!=7:
print("SISTEMA DE DIAGNÒSTIC RÀPID DE FALLADES EN XARXA")
print("*************************************************")
print("\nMENÚ")
print("****")
print("1. Eina PING")
print("2. Eina TRACERT")
print("3. Eina HOSTNAME")
print("4. Eina IFCONFIG")
print("5. Eina DNS")
print("6. Eina GATEWAY")
print("7. Sortir")
opcio=eval(input("Tria una eina: "))
if opcio==1:
print("Faré 4 pings a www.google.com")
os.system("ping -c 4 www.google.com")
elif opcio==2:
print("Faré un traceroute a www.google.com")
os.system("traceroute www.google.com")
elif opcio==3:
print("El nom de host d'aquest sistema és")
os.system("hostname")
elif opcio==4:
print("Resultat de la comanda ifconfig:")
os.system("ifconfig -a")
elif opcio==5:
print("L'adreça IP de google.com és")
os.system("host google.com")
elif opcio==6:
os.system("ping -c 4 gateway")
elif opcio==7:
print("Fins aviat")
else:
print("opció incorrecta")
1.5. Exercici 5¶
Fent servir la llibreria datetime
realitza l’exercici següent:
Hora i dia actual: 2018-05-02 13:04:21.221194
Hora i dia actual amb format: 18-05-02-13-04
Any Actual: 2018
Mes actual: May
Setmana de l'any: 18
Dia de la setmana en número: 3
Dia de l'any: 122
Dia del mes: 02
Dia de la setmana: Wednesday
No cal utilitzar funcions per aquest programa. Per poder donar-li el
format desitjat a datetime
, hauràs de fer servir
strtime
Exemple:
datetime.date.today().strftime("%c"))
1.5.1. Resposta 5¶
exercici5.py
import time
print("Hora i dia actual: %s" % time.strftime("%Y-%m-%d %H:%M:%S.%f"))
print("Hora i dia actual amb format: %s" % time.strftime("%y-%m-%d-%H-%M"))
print("Any actual: %s" % time.strftime("%Y"))
print("Mes actual: %s" % time.strftime("%b"))
print("Setmana de l'any: %s" % time.strftime("%W"))
print("Dia de la setmana en número: %s" % time.strftime("%w"))
print("Dia de l'any: %s" % time.strftime("%j"))
print("Dia del mes: %s" % time.strftime("%d"))
print("Dia de la setmana: %s" % time.strftime("%a"))
A02. Fitxers¶
2.1 Exercici 1¶
Realitza un algorisme que llegeixi les 100 primeres línies del fitxer de
text diccionari.txt
penjat al moodle i les imprimeixi
2.1.1. Resposta 1¶
exercici1.py
arxiu = open('castellano.txt','r')
for i in range(100):
cadena2 = arxiu.readline()
print(cadena2, end="")
arxiu.close
2.2. Exercici 2¶
Modifica el programa anterior per crear un fitxer nou anomenat
primeres.txt
amb les 100 primeres paraules del diccionari. No ha
sortir per pantalla, hauràs d’obrir el fitxer nou
2.2.1. Resposta 2¶
exercici2.py
fi = open('castellano.txt','r')
fo = open('primers.txt','w')
for i in range(100):
cadena2 = arxiu.readline()
fo.write(cadena2)
fi.close
fo.close
2.3. Exercici 3¶
Obri el fitxer diccionari.txt
i elimina tots el caràcters '
que
apareixen al començament d’algunes paraules, així com tot el que hi ha
després de la /
. Crea un nou fitxer, diccio2.txt
amb les
paraules netes. Utilitza la llibreria estàndard de python string
.
Aquesta llibreria no l’has d’importar
2.3.1. Resposta 3¶
exercici3.py
fi = open('castellano.txt','r')
fo = open('diccio2.txt','w')
for i in fi:
cadena2 = fi.readline()
if cadena2.startswith("'")
cadena2 = cadena2[1:]
pos = cadena2.find('/')
if pos != -1:
cadena2 = cadena2[:pos]+"\n" #Afegit perquè si eliminem la resta de la línia, també ens mengem el salt de línia, i amb això, l'afegim
fo.write(cadena2)
fi.close
fo.close
2.4. Exercici 4¶
Realitza un algorisme que llegeixi totes les paraules que comencin per
una paraula donada per l’usuari. Has de fer servir el nou diccionari,
diccio2.txt
.
2.4.1. Resposta 4¶
exercici4.py
lletra = input("Per quina lletra començarà la paraula? ")
fi = open('diccio2.txt','r')
for i in fi:
cadena2 = fi.readline()
if cadena2.startswith(lletra):
print(cadena2)
fi.close
2.5. Exercici 5¶
Realitza un algorisme que torni una paraula en random del diccionari.
Has de fer servir el nou diccionari, diccio2.txt
. Per saber de quant
és el random, compta el número de paraules que té. Pot ser útil fer
servir llistes.
2.5.1. Resposta 5¶
exercici5.py
def treuInfo(fitxer):
text = []
f = open(fitxer,'r')
text = f.readlines()
f.close
return text
def numerosAlea(limit):
import random
return random.randint(0,limit)
lst=[]
lst=treuInfo("diccio2.txt")
total=len(lst)
pos=numeroAlea(total)
print(pos)
print(lst[pos])
2.6. Exercici 6¶
Tenim un fitxer que es diu alumnes.txt
amb el següent contingut
joe 10 15 20 30 40
bill 23 16 19 22
sue 8 22 17 14 32 17 24 21 2 9 11 17
grace 12 28 21 45 26 10
john 14 32 25 16 89
Hi ha una línia per cada estudiant i en cadascuna hi ha el nom de l’estudiant i una sèrie de notes de pràctiques. Realitza un programa que mostri els estudiants que han lliurat més de X pràctiques. El número de pràctiques es demanarà a l’usuari. Realitza el control d’excepcions i validació de l’entrada de dades. El número de pràctiques no pot ser negatiu ni lletres. Pots fer servir el mètode split.
Sortida esperada
Quantes pràctiques ha de fer?: a
Has d'introduir un número.
Quantes pràctiques ha de fer?: -2
No pots posar números negatius o 0
Quantes pràctiques ha de fer?: 5
alumne: sue , Nº pràctiques: 12
alumne: grace , Nº pràctiques: 6
2.6.1. Resposta 6¶
exercici6.py
archivo=open('alumnes.txt','r')
lista=[]
pract=int(input("Quantes pràctiques a de fer per aprovar: ")
while pract>0:
try:
for line in archivo.readlines():
lista=line.split()
elements=(len(lista)-1)
if elements>=pract:
print(lista)
else:
print("Ha de ser major de 0")
except ValueError:
print("Només pots possar numeros")
archivo.close()