Mòduls estàndards: mòduls de sistema¶
Python té els seus propis mòduls, els quals formen part de la seva llibreria de mòduls estàndard, que també poden ser importats. En aquesta unitat anem a estuir les funcions principals de mòduls relacionats amb el sistema operatiu i especialment amb el treball amb fitxers i directoris.
Mòdul os¶
El mòdul os ens permet accedir a funcionalitats dependenes del Sistema Operatiu. Sobre tot, aquelles que ens refereixen informació sobre l'entorn del mateix i ens permeten manipular l'estructura de directoris.
| Descripció | atMètode |
|---|---|
| Saber si es pot accedir a un arxiu o directori | os.access(path, mode_de_acces) |
| Conèixer el directori actual | os.getcwd() |
| Canviar de directori de treball | os.chdir(nou_path) |
| Canviar el directori de treball arrel | os.chroot() |
| Canviar els permissos d'un arxiu o directori | os.chmod(path, permissos) |
| Canviar el propietari d'un arxiu o directorio | os.chown(path, permissos) |
| Crear un directori | os.mkdir(path[, mode]) |
| Crear directoris recursivament | os.mkdirs(path[, mode]) |
| Eliminar un fitxer | os.remove(path) |
| Eliminar un directori | os.rmdir(path) |
| Eliminar directoris recursivamente | os.removedirs(path) |
| Renombrar un fitxer | os.rename(actual, nou) |
| Crear un enllaç simbòlic | os.symlink(path, nom_desti) |
>>> import os
>>> os.getcwd()
'/home/francesc/github/python/curs/u40'
>>> os.chdir("..")
>>> os.getcwd()
'/home/francesc/github/python/curs'
El mòdul os també ens proveeix del submòdul path (os.path) el qual ens permet accedir a certes funcionalitats relacionades amb els noms de les rutes de fitxers i directoris.
| Descripció | Mètode |
|---|---|
| Ruta absoluta | os.path.abspath(path) |
| Directori base | os.path.basename(path) |
| Saber si un directori existeix | os.path.exists(path) |
| Conèixer el darrer accés a un directori | os.path.getatime(path) |
| Conèixer tamany del directori | os.path.getsize(path) |
| Saber si una ruta és absoluta | os.path.isabs(path) |
| Saber si una ruta és un fitxer | os.path.isfile(path) |
| Saber si una ruta és un directori | os.path.isdir(path) |
| Saber si una ruta és un enllaç simbòlic | os.path.islink(path) |
| Saber si una ruta és un punt de muntatge | os.path.ismount(path) |
Executar comandes del sistema operatiu. Mòdul subprocess¶
Amb la funció system() del mòdul os ens permet executar comandes del sistema operatiu.
La funció ens retorna un codi per indicar si l'instrucció s'ha executat amb èxit.
Tenim una altre manera d'executar comandes del sistema operatiu que ens dona més funcionalitat, per exemple ens permet guardar la sortida de la comanda en una variable. Per fer-ho podem utilitzar el mòdul subprocess
>>> import subprocess
>>> subprocess.call("ls")
curs model.odp README.md
0
>>> salida=subprocess.check_output("ls")
>>> print(salida.decode())
curs
model.odp
README.md
>>> salida=subprocess.check_output(["df","-h"])
>>> salida = subprocess.Popen(["df","-h"], stdout=subprocess.PIPE)
>>> salida.communicate()[0]
Mòdul shutil¶
El mòdul shutil de funcions per realitzar operacions d'alt nivell amb fitxers i directoris. Dintre de les operacions que es poden realitzar estàn copiar,moure i borrar fitxers i directories; i copiar els permissos i l'estat dels fitxers.
| Descripció | Mètode |
|---|---|
| Copia un fitxers complert o part | shutil.copyfileobj(fsrc, fdst[, length]) |
| Copia el contingut complet (sense metadades) d'un fitxer | shutil.copyfile(src, dst, *, follow_symlinks=True) |
| copia els permissos d'un fitxer origen a un destí | shutil.copymode(src, dst, *, follow_symlinks=True) |
| Copia els permissos, la data-hora de l'últim accés, la data-hora de la darrera modificació i els atributs d'un fitxer origen a un fitxer destí | shutil.copystat(src, dst, *, follow_symlinks=True) |
| Copia un fitxer (només dades i permissos) | shutil.copy(src, dst, *, follow_symlinks=True) |
| Copia fitxers (dades, permissos i metadades) | shutil.move(src, dst, copy_function=copy2) |
| Obté informació de l'espai total, usat i lliure, en bytes | shutil.disk_usage(path) |
| Obtenir la ruta d'un fitxer executable | shutil.chown(path, user=None, group=None) |
| Saber si una ruta és un enllaç simbòlic | shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None) |
Mòduls sys¶
El mòdul sys és el encarregat de proveir variables i funcionalitats, directament relacionades amb l'intèrpret.
Algunes variables definides en el mòdul:
| Variable | Descripció |
|---|---|
sys.argv |
Retorna una lista con todos los argumentos pasados por línea de comandos. Al ejecutar python modulo.py arg1 arg2, retornará una lista: ['modulo.py', 'arg1', 'arg2'] |
sys.executable |
Retorna el path absoluto del binario ejecutable del intérprete de Python |
sys.platform |
Retorna la plataforma sobre la cuál se está ejecutando el intérprete |
sys.version |
Retorna el número de versión de Python con información adicional |
Y algunos métodos:
| Método | Descripción |
|---|---|
sys.exit() |
Forzar la salida del intérprete |
sys.getdefaultencoding() |
Retorna la codificación de caracteres por defecto |
Execució de scripts amb arguments¶
Podem enviar informació (arguments) a un programa quan s'executa como un script, per exemple:
#!/usr/bin/env python
import sys
print("Has instroducido",len(sys.argv),"argumento")
suma=0
for i in range(1,len(sys.argv)):
suma=suma+int(sys.argv[i])
print("La suma es ",suma)
$ python3 sumar.py 3 4 5
Has introducido 4 argumento
La suma es 12
Altres mòduls interessants¶
pathlib¶
Permet manipular rutes de sistemes d'arxius de forma agnòstica en qualsevol sistema operatiu. El mòdul pathlib és similar a l'os.path, però pathlib ofereix una interfície de nivell més alt, i, sovint, més convenient, que os.path.
glob¶
Inclou funcions per buscar en una ruta tots els noms d'arxius i/o directoris que coincideixin amb un determinat patró que pot contenir comodins com els que s'utilitzen en un intèrpret de comandaments tipus Unix (*,?, []).
filecmp¶
Defineix funcions per comparar fitxers i directoris