Diferència entre revisions de la pàgina «ASIX-M3-UF3-A1»
De wikiserver
(Es crea la pàgina amb «'''Fitxers''' Els fitxers permeten emmagatzemar dades en memòria permanent. Des de Python podem llegir i escriure fitxers amb algunes instruccions particulars.».) |
|||
(Hi ha 20 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | ''' | + | '''Gestió d'arxius i directoris en Python''' |
Els fitxers permeten emmagatzemar dades en memòria permanent. Des de Python podem llegir i escriure fitxers amb algunes instruccions particulars. | Els fitxers permeten emmagatzemar dades en memòria permanent. Des de Python podem llegir i escriure fitxers amb algunes instruccions particulars. | ||
+ | |||
+ | [https://python-para-impacientes.blogspot.com/2015/09/explorando-directorios-con-listdir-walk.html] | ||
+ | |||
+ | Els mòduls "os" i "shutil" permeten realitzar tasques com caviar de directori, crear i eliminar carpetes o arxius,... | ||
+ | |||
+ | Veiem com: | ||
+ | |||
+ | :* '''Canvi de directori''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> # Directori actual | ||
+ | ... os.getcwd() | ||
+ | '/home/ramon' | ||
+ | >>> # Canvi de directori | ||
+ | >>> os.chdir('/home/ramon/PythonProjects') | ||
+ | >>> # Directori actual | ||
+ | ... os.getcwd() | ||
+ | '/home/ramon/PythonProjects' | ||
+ | </source> | ||
+ | |||
+ | :* '''Trajectòria absoluta d'un arxiu o directori''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> # Trajectòria absoluta | ||
+ | >>> os.path.abspath('PythonProjects/jocs') | ||
+ | ... /home/ramon/PythonProjects/jocs | ||
+ | </source> | ||
+ | |||
+ | :* '''Comprovar l'existència d'un directori''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> # Comprovar existència d'un directori | ||
+ | ... if os.path.exists('/home/ramon/PythonProjects'): | ||
+ | ... print("El directori existeix!") | ||
+ | ... else: | ||
+ | ... print("El directori no existeix!") | ||
+ | ... | ||
+ | El directori existeix! | ||
+ | </source> | ||
+ | |||
+ | :* '''Arxiu o directori?''' | ||
+ | <source lang=python> | ||
+ | >>> os.path.isfile("PythonProjects") | ||
+ | False | ||
+ | >>> os.path.isfile("practica.doc") | ||
+ | True | ||
+ | >>> os.path.isdir("PythonProjects") | ||
+ | True | ||
+ | >>> os.path.isdir("practica.doc") | ||
+ | False | ||
+ | </source> | ||
+ | |||
+ | :* Obtenir ruta concatenant paraules | ||
+ | <source lang=python> | ||
+ | >>> os.path.join("Programacio","UF2","practica1.pdf") | ||
+ | 'Programacio/UF2/practica1.pdf' | ||
+ | </source> | ||
+ | |||
+ | :* '''Obtenir llista de subdirectoris i arxius d'un directori | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> # Llistat de subdirectoris i arxius | ||
+ | ... # Directori actual | ||
+ | ... print(os.listdir()) | ||
+ | ['Treballadors.py', 'grafics_1.py', 'Activitat_11.py', 'Calculadora.py', 'prova.py'] | ||
+ | >>> # Indicant el directori | ||
+ | ... print(os.listdir('/home/ramon/Base de dades')) | ||
+ | ['investigaciones', 'empresa.odb', 'consultar-alumnos.odb', 'Notes.odb'] | ||
+ | </source> | ||
+ | |||
+ | :* '''Creació de directoris | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> # Directori actual | ||
+ | ... os.getcwd() | ||
+ | '/home/ramon/PythonProjects' | ||
+ | >>> # Creació d'un subdirectori | ||
+ | ... os.mkdir("arxius") | ||
+ | >>> # Creació de tres subdirectoris imbricats a partir del directori actual | ||
+ | ... os.makedirs("grups/asix/primer") | ||
+ | >>> # Comprovem l'existència dels subdirectoris | ||
+ | ... os.path.exists("/home/ramon/PythonProjects/grups/asix/primer") | ||
+ | True | ||
+ | </source> | ||
+ | |||
+ | :* '''Eliminar directoris buits''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> # Eliminem el subdirectori 'asix' | ||
+ | ... os.rmdir("/home/ramon/PythonProjects/grups/asix") | ||
+ | Traceback (most recent call last): | ||
+ | File "<stdin>", line 1, in <module> | ||
+ | OSError: [Errno 39] Directory not empty: '/home/ramon/PythonProjects/grups/asix' | ||
+ | >>> # Eliminem el subdirectori 'primer' | ||
+ | ... os.rmdir("/home/ramon/PythonProjects/grups/asix/primer") | ||
+ | >>> # Comprovem que s'ha eliminat | ||
+ | ... os.path.exists("/home/ramon/PythonProjects/grups/asix/primer") | ||
+ | False | ||
+ | </source> | ||
+ | |||
+ | :* '''Eliminar directoris i tot el seu contingut''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "shutil" | ||
+ | ... import shutil | ||
+ | >>> # Eliminem el subdirectori 'grups' | ||
+ | ... shutil.rmtree("/home/ramon/PythonProjects/grups") | ||
+ | >>> # Comprovem que s'ha eliminat | ||
+ | ... os.path.exists("/home/ramon/PythonProjects/grups") | ||
+ | False | ||
+ | </source> | ||
+ | |||
+ | :* '''Crear, escriure i tancar un arxiu''' | ||
+ | <source lang=python> | ||
+ | >>> # Creem l'arxiu per escriure. "r" si el que volem és llegir-lo | ||
+ | ... arxiu = open("nou_arxiu.txt","w") | ||
+ | >>> # Escrivim en l'arxiu | ||
+ | ... arxiu.write("Hello world!") | ||
+ | 12 | ||
+ | >>> # Tanquem l'arxiu | ||
+ | ... arxiu.close() | ||
+ | </source> | ||
+ | |||
+ | :* '''Canviar el nom d'un arxiu''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> os.rename("nou_arxiu.txt","arxiu_nou.txt") | ||
+ | </source> | ||
+ | |||
+ | :* '''Copiar arxius''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "shutil" | ||
+ | ... import shutil | ||
+ | >>> shutil.copy("arxiu_nou.txt","arxius/arxiu_copy.txt") # li podem donar un nom diferent a la còpia. | ||
+ | 'arxius/arxiu_copy.txt' | ||
+ | </source> | ||
+ | |||
+ | :* '''Moure arxius''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "shutil" | ||
+ | ... import shutil | ||
+ | >>> shutil.move("arxiu_nou.txt","arxius") | ||
+ | </source> | ||
+ | |||
+ | :* '''Eliminar arxius''' | ||
+ | <source lang=python> | ||
+ | >>> # Importem "os" | ||
+ | ... import os | ||
+ | >>> # Eliminem l'arxiu arxiu_copy.txt del subdirectori 'arxius' | ||
+ | ... os.remove("arxius/arxiu_copy.txt") | ||
+ | >>> # Comprovem que s'ha eliminat | ||
+ | ... os.path.exists("arxius/arxiu_copy.txt") | ||
+ | False | ||
+ | </source> |
Revisió de 19:47, 17 abr 2021
Gestió d'arxius i directoris en Python
Els fitxers permeten emmagatzemar dades en memòria permanent. Des de Python podem llegir i escriure fitxers amb algunes instruccions particulars.
Els mòduls "os" i "shutil" permeten realitzar tasques com caviar de directori, crear i eliminar carpetes o arxius,...
Veiem com:
- Canvi de directori
>>> # Importem "os"
... import os
>>> # Directori actual
... os.getcwd()
'/home/ramon'
>>> # Canvi de directori
>>> os.chdir('/home/ramon/PythonProjects')
>>> # Directori actual
... os.getcwd()
'/home/ramon/PythonProjects'
- Trajectòria absoluta d'un arxiu o directori
>>> # Importem "os"
... import os
>>> # Trajectòria absoluta
>>> os.path.abspath('PythonProjects/jocs')
... /home/ramon/PythonProjects/jocs
- Comprovar l'existència d'un directori
>>> # Importem "os"
... import os
>>> # Comprovar existència d'un directori
... if os.path.exists('/home/ramon/PythonProjects'):
... print("El directori existeix!")
... else:
... print("El directori no existeix!")
...
El directori existeix!
- Arxiu o directori?
>>> os.path.isfile("PythonProjects")
False
>>> os.path.isfile("practica.doc")
True
>>> os.path.isdir("PythonProjects")
True
>>> os.path.isdir("practica.doc")
False
- Obtenir ruta concatenant paraules
>>> os.path.join("Programacio","UF2","practica1.pdf")
'Programacio/UF2/practica1.pdf'
- Obtenir llista de subdirectoris i arxius d'un directori
>>> # Importem "os"
... import os
>>> # Llistat de subdirectoris i arxius
... # Directori actual
... print(os.listdir())
['Treballadors.py', 'grafics_1.py', 'Activitat_11.py', 'Calculadora.py', 'prova.py']
>>> # Indicant el directori
... print(os.listdir('/home/ramon/Base de dades'))
['investigaciones', 'empresa.odb', 'consultar-alumnos.odb', 'Notes.odb']
- Creació de directoris
>>> # Importem "os"
... import os
>>> # Directori actual
... os.getcwd()
'/home/ramon/PythonProjects'
>>> # Creació d'un subdirectori
... os.mkdir("arxius")
>>> # Creació de tres subdirectoris imbricats a partir del directori actual
... os.makedirs("grups/asix/primer")
>>> # Comprovem l'existència dels subdirectoris
... os.path.exists("/home/ramon/PythonProjects/grups/asix/primer")
True
- Eliminar directoris buits
>>> # Importem "os"
... import os
>>> # Eliminem el subdirectori 'asix'
... os.rmdir("/home/ramon/PythonProjects/grups/asix")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: '/home/ramon/PythonProjects/grups/asix'
>>> # Eliminem el subdirectori 'primer'
... os.rmdir("/home/ramon/PythonProjects/grups/asix/primer")
>>> # Comprovem que s'ha eliminat
... os.path.exists("/home/ramon/PythonProjects/grups/asix/primer")
False
- Eliminar directoris i tot el seu contingut
>>> # Importem "shutil"
... import shutil
>>> # Eliminem el subdirectori 'grups'
... shutil.rmtree("/home/ramon/PythonProjects/grups")
>>> # Comprovem que s'ha eliminat
... os.path.exists("/home/ramon/PythonProjects/grups")
False
- Crear, escriure i tancar un arxiu
>>> # Creem l'arxiu per escriure. "r" si el que volem és llegir-lo
... arxiu = open("nou_arxiu.txt","w")
>>> # Escrivim en l'arxiu
... arxiu.write("Hello world!")
12
>>> # Tanquem l'arxiu
... arxiu.close()
- Canviar el nom d'un arxiu
>>> # Importem "os"
... import os
>>> os.rename("nou_arxiu.txt","arxiu_nou.txt")
- Copiar arxius
>>> # Importem "shutil"
... import shutil
>>> shutil.copy("arxiu_nou.txt","arxius/arxiu_copy.txt") # li podem donar un nom diferent a la còpia.
'arxius/arxiu_copy.txt'
- Moure arxius
>>> # Importem "shutil"
... import shutil
>>> shutil.move("arxiu_nou.txt","arxius")
- Eliminar arxius
>>> # Importem "os"
... import os
>>> # Eliminem l'arxiu arxiu_copy.txt del subdirectori 'arxius'
... os.remove("arxius/arxiu_copy.txt")
>>> # Comprovem que s'ha eliminat
... os.path.exists("arxius/arxiu_copy.txt")
False