¿Qué es el módulo del sistema operativo de Python y cómo se usa?
El módulo OS en Python proporciona acceso a funciones específicas del sistema para tratar con el sistema de archivos, procesos, programador, etc. Necesita dominar el sistema Python OS para escribir aplicaciones que se ocupen de problemas del mundo real. Esta guía analiza algunos de los conceptos básicos e ilustra cómo usar el comando del sistema Python.
Características del sistema operativo Python
El sistema operativo sirve como una forma portátil de interactuar con el sistema operativo subyacente. Ofrece acceso a nombres de archivo, argumentos de línea de comando, variables de entorno, parámetros de proceso y jerarquía del sistema de archivos junto con otras funcionalidades.
Este módulo también contiene dos submódulos, el módulo os.sys y el módulo os.path. Puede utilizar las funciones proporcionadas por el módulo del sistema operativo para realizar una amplia gama de tareas. Algunos usos comunes incluyen ejecutar comandos de shell, administrar archivos y directorios, procesos de generación , etc.
Introducción al módulo del sistema operativo
La forma más sencilla de explorar el módulo del sistema operativo es a través del intérprete. Puede importar el módulo allí y utilizar las funciones del sistema sin escribir código fuente. Sin embargo, debe tener Python instalado para esto. Así que adelante e instala Python en tu máquina local.
Inicie el intérprete escribiendo python en su terminal o shell de comandos. Una vez que esté abierto, importe el módulo del sistema operativo utilizando la siguiente declaración.
>>> import os
Ahora puede acceder a las funcionalidades proporcionadas por el módulo del sistema operativo, incluido el comando del sistema Python. Por ejemplo, puede determinar la plataforma del sistema mediante el comando de nombre . El siguiente ejemplo muestra cómo invocar los comandos del sistema expuestos por el módulo del sistema operativo.
>>> os.name
Esta función verifica si ciertos módulos específicos del sistema operativo están presentes y determina la plataforma en base a eso. Utilice la función uname para obtener información detallada.
>>> os.uname()
Este comando muestra la plataforma del sistema exacta junto con la arquitectura de la máquina, la versión y la información de la versión. Utilice la función getcwd para recuperar el directorio de trabajo actual.
>>> os.getcwd()
Puede cambiar fácilmente el directorio de trabajo usando el comando del sistema de Python chdir . Pase la nueva ubicación como un parámetro de cadena.
>>> os.chdir('/tmp')
La función mkdir del módulo OS facilita la creación de nuevos directorios. También nos permite crear carpetas recursivas, lo que significa que Python creará todos los directorios faltantes que son padres del directorio hoja.
>>> os.mkdir('new-dir')
Utilice el comando rmdir para eliminar directorios de su directorio de trabajo.
>>> os.rmdir('new-dir')
Ejemplos de comandos del sistema Python
El comando del sistema proporcionado por el módulo del sistema operativo permite a los programadores ejecutar comandos de shell. Asegúrese de definir el nombre del comando como una cadena. Una vez que llame al comando del sistema de Python, ejecutará el comando dado en una nueva subcapa.
>>> cmd = 'date'
>>> os.system(cmd)
Puede ejecutar otras aplicaciones independientes utilizando este mismo método. El siguiente ejemplo ejecuta el editor de terminal nano desde su shell de Python.
>>> cmd = 'nano'
>>> os.system(cmd)
El sistema Python OS también genera el código de retorno para cada comando que se ejecuta. Los sistemas POSIX devuelven 0 para una ejecución satisfactoria y valores distintos de cero para indicar problemas.
Puede utilizar el sistema operativo en Python para ejecutar lo que desee. Por ejemplo, si su programa necesita leer la información de la versión de un programa en la máquina del usuario, puede hacer algo como lo siguiente.
>>> cmd = 'gcc --version'
>>> os.system(cmd)
El siguiente ejemplo ejecuta un comando de shell simple que crea un nuevo archivo llamado users.txt y lo completa con todos los usuarios conectados. Muchos programas de Python hacen estas cosas.
>>> os.system('users > test')
Pasamos el nombre del comando al sistema operativo como una cadena. Puede utilizar todos los tipos de comandos de terminal útiles de la misma manera.
>>> os.system('ping -c 3 google.com')
También puede usar llamadas a subprocesos para ejecutar comandos del sistema desde Python. Esto proporciona varios beneficios adicionales, que incluyen un tiempo de ejecución más rápido, un mejor manejo de errores, análisis de salida y comandos de shell de canalización. La documentación oficial de Python también recomienda la llamada al subproceso sobre módulos más antiguos como os.system y os.spawn .
>>> import subprocess
>>> subprocess.run(["ping","-c 3", "example.com"])
Gestión de archivos y directorios a través del módulo del sistema operativo
Hemos mostrado cómo crear archivos y directorios simples usando el módulo del sistema operativo Python. ¿Qué sucede si desea crear carpetas anidadas? El sistema operativo también se encarga de esto para nosotros, los programadores. Por ejemplo, los siguientes fragmentos crean la carpeta $ HOME / test / root / api . También creará los directorios principales necesarios si no están disponibles.
>>> dirname = os.path.join(os.environ['HOME'], 'test', 'root', 'api')
>>> print(dirname)
>>> os.makedirs(dirname)
Primero, recuperamos el directorio de inicio usando environment y luego unimos los nombres de las carpetas a través de os.path.join . La declaración de impresión muestra el nombre de la carpeta y makedirs la crea.
Podemos ver el nuevo directorio usando el método listdir del módulo del sistema operativo.
>>> os.chdir(os.path.join(os.environ['HOME'], 'test', 'root', 'api'))
>>> os.system('touch file1 file2 file3')
>>> os.listdir(os.environ['HOME'])
Puede cambiar fácilmente el nombre del directorio api utilizando el comando de cambio de nombre que ofrece el módulo del sistema operativo. La siguiente declaración cambia el nombre de este directorio api a test-api.
>>> os.rename('api', 'test-api')
Utilice las funciones isfile e isdir del sistema operativo si su programa necesita validar archivos o directorios específicos.
>>> os.path.isfile('file1')
>>> os.path.isdir('file1')
El módulo del sistema operativo en Python también permite a los desarrolladores extraer nombres de archivos y carpetas junto con las extensiones de archivo. Los siguientes fragmentos ilustran el uso de os.path.split y os.path.splitext a este respecto.
>>> dir = os.path.join(os.environ['HOME'], 'test', 'root', 'api', 'file1.txt')
>>> dirname, basename = os.path.split(dir)
>>> print(dirname)
>>> print(basename)
Utilice el siguiente código para extraer extensiones como .txt o .mp3 de los nombres de archivo.
>>> filename, extension = os.path.splitext(basename)
>>> print(filename)
>>> print(extension)
Uso misceláneo del sistema operativo Python
El módulo del sistema operativo ofrece muchas funciones adicionales para manipular cosas como los procesos del usuario y el programador de trabajos. Por ejemplo, puede obtener rápidamente el UID (ID de usuario) del proceso actual utilizando la función getuid .
>>> os.getuid()
>>> os.getgid()
La función getgid devuelve el ID de grupo del proceso en ejecución. Utilice getpid para obtener el PID (identificación del proceso) y getppid para obtener la identificación del proceso principal.
>>> os.getpid()
>>> os.getppid()
También puede usar el módulo del sistema operativo para cambiar los permisos de archivos y directorios desde su programa Python. Utilice la función chmod del sistema operativo para hacer esto.
>>> os.chmod('file1.txt', 0o444)
Este comando cambia el permiso de file1.txt a 0444 . Utilice 0o444 en lugar de 0444 para asegurarse de que la declaración sea compatible en las dos versiones principales de Python.
Aproveche el poder del sistema operativo Python
El módulo del sistema operativo de Python proporciona todo lo que necesita para interactuar con el sistema operativo subyacente. Se necesita una comprensión clara del sistema operativo para escribir programas verdaderamente multiplataforma. Hemos cubierto algunas de las funcionalidades principales proporcionadas por este módulo para ayudarlo a comenzar. Pruébelos a su propio ritmo y no olvide jugar con ellos.