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 volver a 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, analizaremos el flujo de control (para elegir diferentes cursos de acción según 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 aplicaremos 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 usar las herramientas regulares de bash.

En otras palabras, queremos ir desde

# uname -snrvm

a

o

Se ve bonita, ¿no? Vamos a arremangarnos y hacer que suceda.

Flujo de control en Python

Como dijimos anteriormente, el flujo de control nos permite elegir diferentes resultados dependiendo de una condición dada. 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. When condition evaluates to true, the code block below will be executed (represented by # action 1. Otherwise, the code under else will be run.
  2. A condition can be any statement that can evaluate to either true or false. For example:
1 < 3 # true
firstName == "Gabriel" # true for me, false for anyone not named Gabriel
  1. In the first example we compared two values to determine if one is greater than the other.
  2. In the second example we compared firstName (a variable) to determine if, at the current execution point, its value is identical to “Gabriel
  3. The condition and the else statement must be followed by a colon (:)
  4. Indentation is important in Python. Lines with identical indentation are considered to be in the same code block.

Tenga en cuenta que la sentencia 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 instrucciones que se ejecutan en orden siempre que una condición sea verdadera o una vez por elemento en una lista.

El bucle más simple en Python está representado por la iteración del bucle for sobre los elementos de una lista o cadena dada que comienza con el primer elemento y termina 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 llamada 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 manera de guardar una secuencia de instrucciones y declaraciones de Python en un archivo que pueda invocarse 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 normalmente realizamos en una línea de comandos.

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

>>> import os

Imprimamos el directorio de trabajo actual:

>>> os.getcwd()

Ahora pongamos todo esto junto (junto con los conceptos discutidos en el artículo anterior) para escribir el script deseado.