Diferència entre revisions de la pàgina «ASIX-M3-UF3-A1»

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha 12 revisions intermèdies del mateix usuari que no es mostren)
Línia 2: Línia 2:
  
 
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://programacionpython80889555.wordpress.com/2020/02/11/gestion-de-archivos-y-carpetas-en-python/]
 
 
[https://recursospython.com/guias-y-manuales/os-shutil-archivos-carpetas/]
 
  
 
[https://python-para-impacientes.blogspot.com/2015/09/explorando-directorios-con-listdir-walk.html]
 
[https://python-para-impacientes.blogspot.com/2015/09/explorando-directorios-con-listdir-walk.html]
Línia 19: Línia 15:
 
>>> # Directori actual
 
>>> # Directori actual
 
... os.getcwd()
 
... os.getcwd()
'/home/ramon/PythonProjects'
+
'/home/ramon'
 
>>> # Canvi de directori
 
>>> # Canvi de directori
>>> os.chdir('/home/ramon/Base de dades')
+
>>> os.chdir('/home/ramon/PythonProjects')
 
>>> # Directori actual
 
>>> # Directori actual
 
... os.getcwd()
 
... os.getcwd()
'/home/ramon/Base de dades'
+
'/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>
 
</source>
  
Línia 38: Línia 43:
 
...  
 
...  
 
El directori 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>
 
</source>
  
Línia 47: Línia 70:
 
... # Directori actual
 
... # Directori actual
 
... print(os.listdir())
 
... 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']
 
['investigaciones', 'empresa.odb', 'consultar-alumnos.odb', 'Notes.odb']
>>> # Indicant el directori
 
... print(os.listdir('/home/ramon/PythonProjects'))
 
['Treballadors.py', 'grafics_1.py', 'Activitat_11.py', 'Calculadora.py', 'prova.py']
 
 
</source>
 
</source>
  
Línia 59: Línia 82:
 
>>> # Directori actual
 
>>> # Directori actual
 
... os.getcwd()
 
... os.getcwd()
'/home/ramon/Base de dades'
+
'/home/ramon/PythonProjects'
 +
>>> # Creació d'un subdirectori
 +
... os.mkdir("arxius")
 
>>> # Creació de tres subdirectoris imbricats a partir del directori actual
 
>>> # Creació de tres subdirectoris imbricats a partir del directori actual
 
... os.makedirs("grups/asix/primer")
 
... os.makedirs("grups/asix/primer")
 
>>> # Comprovem l'existència dels subdirectoris
 
>>> # Comprovem l'existència dels subdirectoris
... os.path.exists("/home/ramon/Base de dades/grups/asix/primer")
+
... os.path.exists("/home/ramon/PythonProjects/grups/asix/primer")
 
True
 
True
 
</source>
 
</source>
  
:* '''Eliminar directoris
+
:* '''Eliminar directoris buits'''
 
<source lang=python>
 
<source lang=python>
 
>>> # Importem "os"
 
>>> # Importem "os"
 
... import os
 
... import os
 
>>> # Eliminem el subdirectori 'asix'
 
>>> # Eliminem el subdirectori 'asix'
... os.rmdir("/home/ramon/Base de dades/grups/asix")
+
... os.rmdir("/home/ramon/PythonProjects/grups/asix")
 
Traceback (most recent call last):
 
Traceback (most recent call last):
 
   File "<stdin>", line 1, in <module>
 
   File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: '/home/ramon/Base de dades/grups/asix'
+
OSError: [Errno 39] Directory not empty: '/home/ramon/PythonProjects/grups/asix'
 
>>> # Eliminem el subdirectori 'primer'
 
>>> # Eliminem el subdirectori 'primer'
... os.rmdir("/home/ramon/Base de dades/grups/asix/primer")
+
... os.rmdir("/home/ramon/PythonProjects/grups/asix/primer")
 
>>> # Comprovem que s'ha eliminat
 
>>> # Comprovem que s'ha eliminat
... os.path.exists("/home/ramon/Base de dades/grups/asix/primer")
+
... os.path.exists("/home/ramon/PythonProjects/grups/asix/primer")
 
False
 
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.

[1]

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