Exercicis: Operacions amb fitxers
Llicència: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 🅭
Objectius
En aquests exercicis treballarem:
Lectura i escriptura a fitxers.
Operacions de manipulació del sistema de fitxers.
Els exercicis marcats amb ✅ seran corregits a classe.
Estructura del projecte
Tots els exercicis han de complir amb la següent estructura:
Cada exercici ha d'anar dins del directori corresponent.
El nom del fitxer ha de coincidir amb el títol de l'exercici.
El format de l'eixida del programa ha de ser consistent amb el format demanat.
La lògica d'aplicació ha d'estar organitzada en classes i mètodes; és recomanable afegir docstrings.
Exercicis
ud5/files
✅ stats.py
Crea un programa que accepte rutes de fitxers com a arguments posicionals i
indique si existeixen i de quin tipus són.
Exemple d'ús
$ python stats.py inexistent.txt /etc/passwd /home
inexistent.txt: No exists
/etc/passwd: File
/home: Directory
✅ cat.py
Crea un programa semblant a l'ordre cat de Linux,
que mostrarà el contingut dels fitxers passats com a arguments.
Si solament es passa un fitxer, es mostrarà el seu contingut.
Si es passen diversos fitxers, s'afegirà una línia abans de cada
indicant la ruta del fitxer.
Si un fitxer no existeix, es mostrarà un missatge d'error.
Exemple d'ús
$ python cat.py file1.txt file2.txt inexistent.txt
===== file1.txt =====
Contingut del fitxer 1 .
===== file2.txt =====
Contingut del fitxer 2 .
Error: 'inexistent.txt' no such file.
✅ users.py
Crea un programa que processe el fitxer /etc/passwd i /etc/group
i mostre per cada usuari del sistema la següent informació:
Nom d'usuari
UID
Grup primari (nom i GID)
Grups secundaris (noms i GID)
En sistemes Windows podeu utilitzar els fitxers del WSL
f = open ( " \\\\ wsl.localhost \\ Ubuntu \\ etc \\ passwd" , "r" )
Exemple d'eixida
$ python users.py
Username: root
UID: 0
Primary Group: root ( GID: 0 )
Secondary Groups: adm ( GID: 4 ) , sudo ( GID: 27 )
Username: user1
UID: 1000
Primary Group: user1 ( GID: 1000 )
Secondary Groups: cdrom ( GID: 24 ) , dip ( GID: 30 ) , plugdev ( GID: 46 )
Ampliació: Exportació a JSON
Modifica el programa perquè accepte un argument opcional -o/--output
que indique un fitxer on exportar la informació en format JSON.
tree.py
Crea un programa semblant a l'ordre tree de Linux,
que mostrarà els continguts del directori especificat com un arbre.
Utilitza els caràcters ├, │ i ─ per representar l'arbre.
El programa rebrà els següents arguments:
Ha d'acceptar un argument posicional path, amb la ruta del directori a recórrer.
Ha d'acceptar un argument opcional -a/--all que també mostrarà els fitxers ocults (comencen per un punt '.').
Exemple d'ús
$ mkdir -p dir/a && mkdir -p dir/b && touch dir/a/f1.txt && touch dir/a/f2.txt && touch dir/b/f3.txt && touch dir/b/.f4.txt
$ python tree.py dir
dir
├── a
│ ├── f1.txt
│ └── f2.txt
└── b
└── f3.txt
$ python tree.py -a dir
dir
├── a
│ ├── f1.txt
│ └── f2.txt
└── b
├── .f4.txt
└── f3.txt
netplan-config.py
Aquest exercici s'ha d'executar en una màquina virtual
Crea un programa que facilite la configuració d'una interfície de xarxa utilitzant netplan.
La sinatxi de l'ordre és la següent:
netplan-config.py INTERFACE [ --static] [ --dynamic] [ --restore RESTORE_FILE] [ -f| --force]
INTERFACE: Nom de la interfície de xarxa.
--static: Iniciarà un procés on el programa li demanrà els diferents paràmetres per configurar l'adaptador amb IP estàtica.
--dynamic: Configurarà l'adaptador en una IP dinàmica.
-f|--force: No demanarà confirmació a l'usuari.
--restore RESTORE_FILE. Restaurarà la versió especificada del fitxer de configuració de netplan.
Abans d'aplicar una configuració, mostrarà un resum amb els nous paràmetres
i li demanarà a l'usuari que confirme l'operació (excepte si s'utilitza l'opció --force).
Abans d'aplicar la nova confirguració, el programa crearà una còpia de seguretat del fitxer de configuració
del directori /etc/netplan/.
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web .
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.