Aprenda el flujo de control de Python y los bucles para escribir y ajustar scripts de shell - Parte 2


En el artículo anterior de esta serie de Python, compartimos una breve introducción a Python, su shell de línea de comandos y el IDLE. También demostramos cómo realizar cálculos aritméticos, cómo almacenar valores en variables y cómo imprimir esos valores en la pantalla. Finalmente, explicamos los conceptos de métodos y propiedades en el contexto de la Programación Orientada a Objetos a través de un ejemplo práctico.

En esta guía discutiremos el flujo de control (para elegir diferentes cursos de acción dependiendo de la información ingresada por un usuario, el resultado de un cálculo o el valor actual de una variable) y los bucles (para automatizar tareas repetitivas) y luego aplicar lo que Hasta ahora he aprendido a escribir un script de shell simple que mostrará el tipo de sistema operativo, el nombre de host, la versión del kernel, la versión y el nombre del hardware de la máquina.

Este ejemplo, aunque básico, nos ayudará a ilustrar cómo podemos aprovechar las capacidades de Python OOP para escribir scripts de shell más fácilmente que con las herramientas bash normales.

En otras palabras, queremos pasar de

# uname -snrvm

a

o

Se ve bonito, ¿no? Arremangámonos y hagámoslo realidad.

Flujo de control en Python

Como dijimos anteriormente, el flujo de control nos permite elegir diferentes resultados dependiendo de una condición determinada. Su implementación más simple en Python es una cláusula if/else.

La sintaxis básica es:

if condition:
    # action 1
else:
    # action 2

  1. Cuando la condición se evalúa como verdadera, se ejecutará el bloque de código siguiente (representado por # action 1 . De lo contrario, se ejecutará el código de else.
  2. Una condición puede ser cualquier declaración que pueda evaluarse como verdadera o falsa. Por ejemplo:

1 < 3 # true
firstName == "Gabriel" # true for me, false for anyone not named Gabriel

  1. En el primer ejemplo, comparamos dos valores para determinar si uno es mayor que el otro.
  2. En el segundo ejemplo comparamos firstName (una variable) para determinar si, en el punto de ejecución actual, su valor es idéntico a "Gabriel"
  3. La condición y la instrucción else deben ir seguidas de dos puntos (:)
  4. La sangría es importante en Python. Las líneas con sangría idéntica se consideran en el mismo bloque de código.

Tenga en cuenta que la declaración if/else es solo una de las muchas herramientas de flujo de control disponibles en Python. Lo revisamos aquí ya que lo usaremos en nuestro script más adelante. Puede obtener más información sobre el resto de las herramientas en los documentos oficiales.

Bucles en Python

En pocas palabras, un bucle es una secuencia de instrucciones o declaraciones que se ejecutan en orden siempre que una condición sea verdadera, o una vez por elemento de una lista.

El bucle más simple en Python está representado por el bucle for que itera sobre los elementos de una lista o cadena determinada, comenzando con el primer elemento y terminando con el último.

Sintaxis básica:

for x in example:
	# do this

Aquí el ejemplo puede ser una lista o una cadena. Si es el primero, la variable denominada x representa cada elemento de la lista; si es el último, x representa cada carácter de la cadena:

>>> rockBands = []
>>> rockBands.append("Roxette")
>>> rockBands.append("Guns N' Roses")
>>> rockBands.append("U2")
>>> for x in rockBands:
    	print(x)
or
>>> firstName = "Gabriel"
>>> for x in firstName:
    	print(x)

La salida de los ejemplos anteriores se muestra en la siguiente imagen:

Módulos de Python

Por razones obvias, debe haber una forma de guardar una secuencia de instrucciones y declaraciones de Python en un archivo que se pueda invocar cuando sea necesario.

Eso es precisamente lo que es un módulo. En particular, el módulo os proporciona una interfaz para el sistema operativo subyacente y nos permite realizar muchas de las operaciones que solemos hacer en una línea de comandos.

Como tal, incorpora varios métodos y propiedades que se pueden llamar como explicamos en el artículo anterior. Sin embargo, necesitamos importarlo (o incluirlo) en nuestro entorno usando la palabra clave de importación:

>>> import os

Imprimamos el directorio de trabajo actual:

>>> os.getcwd()

Ahora juntemos todo esto (junto con los conceptos discutidos en el artículo anterior) para escribir el guión deseado.