Módulos estándares: módulos de sistema
Python tiene sus propios módulos, los cuales forman parte de su librería de módulos estándar, que también pueden ser importados. En esta unidad vamos a estudiar las funciones porincipales de módulos realacionados con el sistema operativo.
Módulo os
El módulo os nos permite acceder a funcionalidades dependientes del Sistema Operativo. Sobre todo, aquellas que nos refieren información sobre el entorno del mismo y nos permiten manipular la estructura de directorios.
Descripción | Método |
---|---|
Saber si se puede acceder a un archivo o directorio | os.access(path, modo_de_acceso) |
Conocer el directorio actual | os.getcwd() |
Cambiar de directorio de trabajo | os.chdir(nuevo_path) |
Cambiar al directorio de trabajo raíz | os.chroot() |
Cambiar los permisos de un archivo o directorio | os.chmod(path, permisos) |
Cambiar el propietario de un archivo o directorio | os.chown(path, permisos) |
Crear un directorio | os.mkdir(path[, modo]) |
Crear directorios recursivamente | os.mkdirs(path[, modo]) |
Eliminar un archivo | os.remove(path) |
Eliminar un directorio | os.rmdir(path) |
Eliminar directorios recursivamente | os.removedirs(path) |
Renombrar un archivo | os.rename(actual, nuevo) |
Crear un enlace simbólico | os.symlink(path, nombre_destino) |
>>> import os
>>> os.getcwd()
'/home/jose/github/curso_python3/curso/u40'
>>> os.chdir("..")
>>> os.getcwd()
'/home/jose/github/curso_python3/curso'
El módulo os también nos provee del submódulo path (os.path) el cual nos permite acceder a ciertas funcionalidades relacionadas con los nombres de las rutas de archivos y directorios.
Descripción | Método |
---|---|
Ruta absoluta | os.path.abspath(path) |
Directorio base | os.path.basename(path) |
Saber si un directorio existe | os.path.exists(path) |
Conocer último acceso a un directorio | os.path.getatime(path) |
Conocer tamaño del directorio | os.path.getsize(path) |
Saber si una ruta es absoluta | os.path.isabs(path) |
Saber si una ruta es un archivo | os.path.isfile(path) |
Saber si una ruta es un directorio | os.path.isdir(path) |
Saber si una ruta es un enlace simbólico | os.path.islink(path) |
Saber si una ruta es un punto de montaje | os.path.ismount(path) |
Ejecutar comandos del sistema operativo. Módulo subprocess
Con la función system()
del módulo os
nos permite ejecutar comandos del sistema operativo.
>>> os.system("ls")
curso modelo.odp README.md
0
La función nos devuelve un código para indicar si la instrucción se ha ejecutado con éxito.
Tenemos otra forma de ejecutar comandos del sistema operativo que nos da más funcionalidad, por ejemplo nos permite guardar la salida del comando en una variable. Para ello podemos usar el módulo subprocess
>>> import subprocess
>>> subprocess.call("ls")
curso modelo.odp README.md
0
>>> salida=subprocess.check_output("ls")
>>> print(salida.decode())
curso
modelo.odp
README.md
>>> salida=subprocess.check_output(["df","-h"])
>>> salida = subprocess.Popen(["df","-h"], stdout=subprocess.PIPE)
>>> salida.communicate()[0]
Módulo shutil
El módulo shutil de funciones para realizar operaciones de alto nivel con archivos y directorios. Dentro de las operaciones que se pueden realizar está copiar, mover y borrar archivos y directorios; y copiar los permisos y el estado de los archivos.
Descripción | Método |
---|---|
Copia un fichero complero o parte | shutil.copyfileobj(fsrc, fdst[, length]) |
Copia el contenido completo (sin metadatos) de un archivo | shutil.copyfile(src, dst, *, follow_symlinks=True) |
copia los permisos de un archivo origen a uno destino | shutil.copymode(src, dst, *, follow_symlinks=True) |
Copia los permisos, la fecha-hora del último acceso, la fecha-hora de la última modificación y los atributos de un archivo origen a un archivo destino | shutil.copystat(src, dst, *, follow_symlinks=True) |
Copia un archivo (sólo datos y permisos) | shutil.copy(src, dst, *, follow_symlinks=True) |
Copia archivos (datos, permisos y metadatos) | shutil.move(src, dst, copy_function=copy2) |
Obtiene información del espacio total, usado y libre, en bytes | shutil.disk_usage(path) |
Obtener la ruta de un archivo ejecutable | shutil.chown(path, user=None, group=None) |
Saber si una ruta es un enlace simbólico | shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None) |
Módulos sys
El módulo sys es el encargado de proveer variables y funcionalidades, directamente relacionadas con el intérprete.
Algunas variables definidas en el módulo:
Variable | Descripción |
---|---|
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 |
Ejecución de scripts con argumentos
Podemos enviar información (argumentos) a un programa cuando se ejecuta como un script, por ejemplo:
#!/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