📖 Tabla de Contenido — Línea de Comandos de Python
- ⚙️ Introducción a la Línea de Comandos de Python
- 💻 Terminal y entorno de ejecución
- 🎮 Modo interactivo de Python (REPL)
- 📂 Ejecutar archivos .py desde la terminal
- 🧩 Explorando
bpython
- 🚀 Mejora de flujo de trabajo con la CLI
- 🪲 Depuración desde la terminal
- 💼 Consejos de productividad
- 🎓 Resumen final de la lección
⚙️ Introducción a la Línea de Comandos de Python
La línea de comandos de Python es una de las herramientas más poderosas para cualquier programador.
Permite ejecutar instrucciones directamente en el intérprete, probar código al instante, depurar errores y automatizar tareas sin necesidad de abrir un editor.
Comprender su funcionamiento te hará más eficiente, dominarás mejor el lenguaje y podrás trabajar igual de bien en Windows, Linux o macOS.
💻 Terminal y entorno de ejecución
Python puede ejecutarse desde cualquier terminal o consola del sistema.
A continuación, veremos cómo hacerlo en cada sistema operativo.
Sistema | Comando para abrir terminal | Descripción |
---|---|---|
🪟 Windows | cmd o powershell | Terminal clásico de Windows. |
🐧 Linux | Ctrl + Alt + T | Abre la consola Bash o Zsh según la distribución. |
🍎 macOS | Terminal | Ubicada en Aplicaciones → Utilidades. |
Una vez abierta la consola, puedes verificar que Python está instalado escribiendo:
python --version
o en algunos sistemas:
python3 --version
La salida debería mostrar algo como:
Python 3.12.1
Si ves ese mensaje, ¡todo está listo para comenzar! 🎉
En caso contrario, asegúrate de haber instalado Python correctamente y de que esté añadido a la variable PATH
.
🐍 Iniciar el intérprete interactivo de Python
El intérprete interactivo o modo REPL (Read–Eval–Print–Loop) permite ejecutar comandos Python uno por uno, viendo los resultados al instante.
Para iniciarlo, escribe en tu terminal:
python
O bien:
python3
Verás algo similar a esto:
Python 3.12.1 (main, Jan 1 2025)
[GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
El prompt >>>
indica que el intérprete está listo para recibir instrucciones.
Por ejemplo, puedes escribir:
print("Hola desde Python CLI!")
Y obtendrás:
Hola desde Python CLI!
Para salir del intérprete, usa exit()
o presiona Ctrl + D (en Linux/macOS) o Ctrl + Z + Enter (en Windows).
🎮 Modo interactivo de Python (REPL)
El REPL (Read–Eval–Print–Loop) es el corazón del entorno interactivo.
Cada comando que escribes es:
- Leído (Read)
- Evaluado (Eval)
- Mostrado (Print)
- Y vuelve al inicio del bucle (Loop)
Este flujo permite probar fragmentos de código, explorar funciones o comprobar errores de forma inmediata, sin crear archivos .py.
🧠 Qué es el REPL
El REPL te ofrece una experiencia de experimentación instantánea: escribes una instrucción y obtienes una respuesta al momento.
Por ejemplo:
>>> 2 + 3
5
>>> nombre = "Javier"
>>> print(f"Hola, {nombre}!")
Hola, Javier!
Cada expresión se evalúa inmediatamente, lo que convierte al REPL en una herramienta excelente para aprender, probar ideas o depurar errores.
⌨️ Comandos útiles dentro del REPL
Comando | Descripción |
---|---|
help() | Muestra el sistema de ayuda interactiva. |
dir(objeto) | Lista atributos y métodos de un objeto. |
type(valor) | Indica el tipo de dato del valor. |
exit() | Sale del intérprete. |
_ | Devuelve el último resultado calculado. |
Por ejemplo:
>>> 10 * 3
30
>>> _ + 5
35
El guion bajo _
guarda el último resultado, una función muy útil cuando haces cálculos rápidos.
💡 Ejemplos prácticos interactivos
El modo interactivo te permite ejecutar pequeñas pruebas en tiempo real. Algunos ejemplos:
>>> mensaje = "Python es genial"
>>> len(mensaje)
17
>>> mensaje.upper()
'PYTHON ES GENIAL'
>>> for i in range(3):
... print("Hola desde el REPL")
...
Hola desde el REPL
Hola desde el REPL
Hola desde el REPL
Como ves, puedes escribir bucles, funciones y estructuras completas directamente desde la consola.
🚪 Salir del modo interactivo
exit()
oquit()
- Ctrl + D (Linux/macOS)
- Ctrl + Z y luego Enter (Windows)
Consejo profesional 💡: si trabajas mucho con el REPL, usa herramientas mejoradas como bpython o IPython, que ofrecen autocompletado y resaltado de sintaxis.
📂 Ejecutar archivos .py desde la terminal
Además del REPL, la forma habitual de usar Python es ejecutar archivos .py
desde la terminal.
Esto te permite empaquetar lógica, pasar argumentos, leer datos y automatizar tareas.
🚀 Ejecutar un script básico
Supón un archivo hola.py
con este contenido:
# hola.py
print("Hola desde un script de Python")
Ejecuta el archivo desde tu terminal:
python hola.py
# o según tu sistema
python3 hola.py
Salida:
Hola desde un script de Python
Ejecutar un módulo como script
También puedes ejecutar un módulo (paquete o librería) con la opción -m
:
python -m http.server 8080 # Inicia un servidor HTTP simple
python -m venv .venv # Crea un entorno virtual
python -m pip install requests # pip como módulo
Otras opciones útiles del intérprete
Opción | Qué hace | Uso típico |
---|---|---|
-V / --version | Muestra la versión | python -V |
-c "código" | Ejecuta código en línea | python -c "print(2+2)" |
-m modulo | Ejecuta un módulo | python -m pip install ... |
-i script.py | Entra al REPL tras ejecutar | Explorar variables post-ejecución |
-u | Modo sin buffer de E/S | Logs en tiempo real, pipes |
-O | Optimiza (ignora asserts) | Scripts productivos específicos |
Shebang (Linux/macOS) y permisos
#!/usr/bin/env python3
print("Script ejecutable")
chmod +x mi_script.py
./mi_script.py
En Windows, normalmente llamarás al intérprete: python mi_script.py
.
⚙️ Pasar argumentos desde la línea de comandos
Los programas reales necesitan parámetros (rutas, flags, valores).
Python ofrece dos vías comunes: leer sys.argv
directamente o usar el módulo argparse
.
Opción 1 — sys.argv
(rápido y simple)
# cli_basico.py
import sys
# sys.argv es una lista: [script, arg1, arg2, ...]
if len(sys.argv) < 2:
print("Uso: python cli_basico.py <nombre>")
sys.exit(1)
nombre = sys.argv[1]
print(f"Hola, {nombre}!")
python cli_basico.py Javier
# Hola, Javier!
Opción 2 — argparse
(profesional y robusto)
# cli_argparse.py
import argparse
parser = argparse.ArgumentParser(
prog="saludador",
description="Ejemplo de CLI con argparse."
)
parser.add_argument("nombre", help="Nombre de la persona")
parser.add_argument("-t", "--titulo", default="", help="Título opcional (Sr., Sra., Ing., etc.)")
parser.add_argument("-n", "--repeticiones", type=int, default=1, help="Veces a saludar")
parser.add_argument("-q", "--quiet", action="store_true", help="Silenciar salida")
args = parser.parse_args()
if not args.quiet:
saludo = f"Hola, {args.titulo + ' ' if args.titulo else ''}{args.nombre}!"
for _ in range(args.repeticiones):
print(saludo)
python cli_argparse.py Ana -t Ing. -n 2
# Hola, Ing. Ana!
# Hola, Ing. Ana!
python cli_argparse.py Ana --quiet
# (sin salida)
Enfoque | Ventajas | Cuándo usar |
---|---|---|
sys.argv | Sencillo, cero dependencias | Scripts rápidos o prototipos |
argparse | Ayuda automática, tipos, flags, validación | Herramientas serias y distribuibles |
🧾 Lectura y salida estándar (stdin/stdout/stderr)
La línea de comandos brilla cuando encadenas programas con pipes o redirecciones.
Python se integra perfecto leyendo de stdin
y escribiendo a stdout
/ stderr
.
Leer de stdin
# mayus.py
import sys
for linea in sys.stdin:
sys.stdout.write(linea.upper())
# Usando pipe:
echo "hola mundo" | python mayus.py
# HOLA MUNDO
# Redirigiendo desde archivo:
python mayus.py < entrada.txt > salida.txt
Escribir a stderr
para errores
# errores.py
import sys
print("Salida normal", file=sys.stdout)
print("Mensaje de error", file=sys.stderr)
python errores.py 1> out.log 2> err.log
# out.log: Salida normal
# err.log: Mensaje de error
Capturar input()
vs stdin
Método | Ventaja | Uso típico |
---|---|---|
input() | Interacción humana (prompts) | Programas “conversacionales” |
sys.stdin | Procesamiento por lotes / pipes | Automatización y scripting |
Leer CSV desde stdin
(ejemplo real)
# suma_csv.py
import sys, csv
lector = csv.reader(sys.stdin)
total = 0.0
for fila in lector:
try:
total += float(fila[-1]) # Suma la última columna
except (ValueError, IndexError):
pass # Ignora líneas no válidas
print(f"TOTAL: {total:.2f}")
cat ventas.csv | python suma_csv.py
# TOTAL: 12345.67
Redirección, pipes y modo sin buffer
# Redirigir stdout a archivo
python script.py > salida.txt
# Redirigir errores (stderr)
python script.py 2> errores.txt
# Encadenar programas con pipes
python genera.py | python procesa.py | python resume.py
# Forzar salida inmediata (logging/progreso)
python -u largo.py
Patrón profesional: separar lógica de I/O
Escribir código testeable implica separar la lógica de negocio de la E/S:
# cli_patron.py
import sys
def transformar(linea: str) -> str:
return linea.strip().title()
def main(stdin, stdout):
for linea in stdin:
stdout.write(transformar(linea) + "\n")
if __name__ == "__main__":
main(sys.stdin, sys.stdout)
Así podrás probar transformar()
con tests sin tocar la terminal.
Checklist rápido (CLI robusta)
- Usa
-m
para ejecutar módulos estándar y tus paquetes. - Para CLIs serias, prefiere
argparse
(o frameworks como Typer/Click). - Divide lógica de negocio y capa de I/O (fácil de testear).
- Usa
stdin/stdout/stderr
para integrarte con pipes. - Activa
-u
si necesitas flush inmediato en pipelines.
🧩 Explorando bpython
bpython es una alternativa avanzada al intérprete interactivo estándar de Python.
Su propósito es ofrecer una experiencia más fluida, visual y productiva en la terminal, combinando autocompletado, resaltado de sintaxis y una interfaz moderna sin salir de la consola.
Ideal para quienes quieren aprender, prototipar o depurar sin abrir un IDE pesado, bpython convierte el REPL tradicional en una herramienta mucho más cómoda y eficiente.
📘 ¿Qué es bpython?
bpython es un intérprete interactivo mejorado para Python, desarrollado por Bob Farrell y la comunidad open source.
A diferencia del REPL estándar, incluye:
- 🎨 Resaltado de sintaxis con colores en tiempo real.
- ⚡ Autocompletado dinámico de variables, métodos y módulos.
- 🔁 Historial interactivo con edición en línea.
- 📄 Vista previa de docstrings (muestra ayuda sin salir del entorno).
- 💾 Grabación y “replay” de sesiones.
- 🔍 Inspección rápida de objetos.
En resumen, bpython convierte la consola en una mini IDE interactiva.
⚙️ Instalación y configuración
La instalación de bpython es muy sencilla usando pip
:
pip install bpython
O si usas un entorno virtual:
python -m venv .venv
source .venv/bin/activate # Linux / macOS
.venv\Scripts\activate # Windows
pip install bpython
Para iniciarlo, simplemente escribe en la terminal:
bpython
Verás algo así:
bpython version 0.24 on top of Python 3.12
>>>
¡Y ya estás dentro!
Puedes comenzar a escribir código Python como en el REPL normal, pero con colores, sugerencias y atajos inteligentes.
💡 Funcionalidades destacadas
1️⃣ Autocompletado inteligente
A medida que escribes, bpython te sugiere variables, funciones o métodos disponibles.
>>> texto = "Hola mundo"
>>> texto.
# (aparece lista: capitalize(), upper(), replace(), etc.)
El autocompletado se basa en introspección, así que muestra solo los métodos aplicables al tipo de objeto.
2️⃣ Resaltado de sintaxis en tiempo real
Cada línea de código se colorea automáticamente, facilitando la lectura del código incluso en sesiones largas.
>>> for i in range(3):
... print(f"Número {i}")
Esto hace que los errores de indentación y paréntesis sean mucho más fáciles de detectar visualmente.
3️⃣ Docstrings y ayuda instantánea
Si escribes el nombre de una función y presionas ?, bpython mostrará su documentación al instante:
>>> print?
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Perfecto para explorar nuevas funciones o módulos sin necesidad de salir del entorno.
4️⃣ Historial y edición de código
Con las flechas ↑ y ↓ puedes navegar por tu historial de comandos anteriores y editarlos en vivo.
Además, si presionas Ctrl + R, puedes buscar entre comandos previos por palabra clave (similar a Bash).
Y si cometes un error en una línea multilínea, puedes editar todo el bloque fácilmente antes de volver a ejecutarlo.
5️⃣ Guardar y reproducir sesiones
¿Quieres guardar tus pruebas?
Presiona Ctrl + D para salir y el sistema te preguntará si deseas guardar la sesión.
Do you want to save this session? (y/N)
También puedes cargarla más tarde:
bpython --load session.json
Ideal para continuar donde lo dejaste o para documentar ejemplos para clases o proyectos.
6️⃣ Integración con el portapapeles
Puedes copiar bloques de código completos presionando F10, y bpython los guardará directamente en el portapapeles o archivo.
Copied 8 lines to clipboard
Esto es muy útil cuando quieres llevar una prueba rápida al editor o al blog sin volver a escribirla.
⚖️ Comparativa con REPL e IPython
Característica | Python REPL estándar | bpython | IPython |
---|---|---|---|
Colores / Sintaxis | ❌ No | ✅ Sí | ✅ Sí |
Autocompletado | ❌ Limitado | ✅ Dinámico | ✅ Avanzado (tab + introspección) |
Vista previa de docstrings | ❌ No | ✅ Instantánea | ✅ Con ? |
Soporte de Bash / Shell | ✅ Básico | ✅ Básico | ✅ Extendido (!ls , !pwd ) |
Reproducción de sesiones | ❌ No | ✅ Sí | ⚙️ Limitado |
Peso e instalación | Ultra ligero | Ligero | Más pesado (usa dependencias científicas) |
Uso ideal | Aprendizaje básico | Experimentación rápida | Entornos científicos y notebooks |
En pocas palabras:
- 🧠 REPL estándar → perfecto para principiantes.
- ⚡ bpython → para quienes buscan rapidez y feedback visual.
- 🔬 IPython → ideal para análisis de datos y entornos Jupyter.
🧰 Comandos rápidos de bpython
Atajo | Función |
---|---|
Ctrl + D | Salir (pregunta si guardar sesión) |
Ctrl + R | Buscar en historial |
F2 | Mostrar/ocultar ventana de ayuda |
F3 | Guardar sesión actual |
F10 | Copiar código al portapapeles |
Ctrl + L | Limpiar pantalla |
? | Mostrar docstring de función/objeto |
🎯 Ejemplo integrador con bpython
Veamos un flujo completo dentro de bpython:
>>> import math
>>> math.
# (autocompletado sugiere: acos, asin, atan, ceil, cos, ...)
>>> math.sqrt(25)
5.0
>>> print?
# muestra la documentación de print()
>>> def cuadrado(x): return x**2
>>> list(map(cuadrado, range(5)))
[0, 1, 4, 9, 16]
Con bpython, todo este proceso resulta inmediato y mucho más cómodo gracias al autocompletado y la vista de ayuda contextual.
🚀 Mejora de flujo de trabajo con la CLI
Optimizar tu flujo en la terminal te ahorra tiempo real. A continuación verás alias/funciones, cómo aprovechar el historial y un set de comandos shell clave para el día a día en Python.
🔖 Alias y atajos útiles
Define alias en tu ~/.bashrc
o ~/.zshrc
para reducir tecleo y errores. Ejemplos:
# Atajos de Python
alias py="python3"
alias pi="python3 -m pip"
alias pym="python3 -m"
# Entornos virtuales
alias venv="python3 -m venv .venv"
alias va="source .venv/bin/activate" # Linux/macOS
alias vw=".venv\\Scripts\\activate" # Windows (PowerShell: .venv\\Scripts\\Activate.ps1)
# Utilidades
alias rmpyc="find . -name '*.pyc' -delete -o -name '__pycache__' -exec rm -r {} +"
alias flake="python3 -m flake8 ."
Tras editarlos: source ~/.bashrc
(o source ~/.zshrc
) para aplicarlos.
📜 Historial y repetición de comandos
Acción | Atajo | Descripción |
---|---|---|
Buscar en historial | Ctrl + R | Búsqueda incremental (escribe parte del comando) |
Repetir último comando | !! | Vuelve a ejecutar el último |
Reutilizar último argumento | !$ | Inserta el último argumento del comando previo |
Historial numerado | history | Muestra comandos con índice |
Ejecutar por índice | !123 | Ejecuta el ítem #123 del history |
En PowerShell, usa Get-History
y Invoke-History
(ihy
) para funciones equivalentes.
🧰 Comandos shell frecuentes en desarrollo
Comando | Para qué | Ejemplo |
---|---|---|
ls / dir | Listar archivos | ls -la |
grep / findstr | Buscar texto | grep -R "def main" src/ |
sed / awk | Editar/filtrar | sed -n '1,20p' file.py |
cat / type | Mostrar contenido | cat requirements.txt |
head / tail | Primeras/últimas líneas | tail -f app.log |
xargs | Encadenar argumentos | grep -l "TODO" -R | xargs wc -l |
🪲 Depuración desde la terminal
La depuración en terminal es directa y extremadamente útil en scripts y servidores. El depurador estándar es pdb
, aunque puedes usar variantes como ipdb
(IPython) según tu stack.
🔍 Uso básico del depurador pdb
Inserta un breakpoint en tu código:
# calcula.py
def dividir(a, b):
return a / b
def main():
x, y = 10, 0
import pdb; pdb.set_trace() # Punto de ruptura
print("Resultado:", dividir(x, y))
if __name__ == "__main__":
main()
Ejecuta el script y entra al depurador donde pusiste set_trace()
.
Comando | Acción |
---|---|
n (next) | Siguiente línea (sin entrar en llamadas) |
s (step) | Entrar en la función |
c (continue) | Continuar hasta el próximo breakpoint |
l (list) | Mostrar código alrededor |
p <expr> | Imprimir expresión (p x ) |
pp <expr> | Pretty print de la expresión |
b N | Breakpoint en línea N |
tbreak N | Breakpoint temporal en N |
bt | Backtrace (pila de llamadas) |
q | Salir del depurador |
También puedes lanzar el depurador sobre un script sin modificarlo:
python -m pdb calcula.py
🎯 Breakpoints y navegación
Crea y gestiona puntos de ruptura sin tocar el código fuente:
python -m pdb app.py
# Dentro de pdb:
(bdb) b 42 # breakpoint en línea 42
(bdb) b app.py:60 # breakpoint en archivo:línea
(bdb) cl 42 # clear breakpoint 42
(bdb) disable 1 # desactivar breakpoint #1
(bdb) enable 1 # reactivar
Consejo: usa tbreak
para puntos de ruptura que se eliminan tras dispararse una vez (ideal para pasar inicializaciones largas).
🧠 Depuración con bpython
bpython no es un depurador, pero ayuda a inspeccionar interactivamente: copia fragmentos fallidos, pégalos, invoca funciones con diferentes datos y observa el comportamiento con autocompletado y docstrings visibles.
$ bpython
>>> from calcula import dividir
>>> dividir(10, 0)
# ZeroDivisionError → ahora prueba casos, inspecciona tipos y docstrings
Para depuración paso a paso, usa pdb
o su variante ipdb
si prefieres la experiencia IPython.
💼 Consejos de productividad
Un buen flujo CLI incluye entornos aislados, instalación controlada de dependencias y mejoras de calidad de vida en la consola.
🧱 Uso de entornos virtuales en la terminal
Aísla dependencias por proyecto con venv
. Evitarás choques de versiones y mantendrás reproducibilidad.
# Crear y activar
python -m venv .venv
# Linux/macOS
source .venv/bin/activate
# Windows (CMD)
.venv\\Scripts\\activate.bat
# Windows (PowerShell)
.venv\\Scripts\\Activate.ps1
# Desactivar
deactivate
Guarda tus dependencias en requirements.txt
:
pip freeze > requirements.txt
pip install -r requirements.txt
📦 Instalación de paquetes con pip
Acción | Comando |
---|---|
Instalar paquete | pip install requests |
Actualizar | pip install -U requests |
Eliminar | pip uninstall requests |
Listar instalados | pip list |
Buscar | pip search <palabra> (alternativas: web PyPI) |
Info paquete | pip show requests |
Pro tip: usa python -m pip
para asegurarte de que usas el pip del intérprete activo.
✨ Autocompletado, historial y mejoras visuales
Mejora tu experiencia con herramientas de línea de comandos:
- readline (Linux/macOS): edición estilo Emacs, historial persistente.
- rlwrap (cuando no tienes readline nativo).
- fzf: buscador difuso para directorios/archivos/historial.
- starship: prompt moderno con info de venv y Git.
- direnv: activa/desactiva
venv
automáticamente al entrar/salir de un proyecto.
# Ejemplo: prompt muestra venv + rama Git
# Instala y configura starship (ver docs del proyecto)
eval "$(starship init bash)"
🧾 Checklist rápido (productividad)
- Alias para
python
,pip
yvenv
(ahorras tecleo y errores). - Usa Ctrl + R para buscar comandos anteriores al instante.
- Aísla dependencias con
venv
y versionarequirements.txt
. - Depura con
pdb
; para inspecciones rápidas, apóyate enbpython
. - Mejora el prompt (starship), usa
fzf
y activa entornos condirenv
.
🎓 Resumen Final de la Lección
En esta lección has aprendido a trabajar con Python directamente desde la línea de comandos,
una habilidad esencial para cualquier desarrollador profesional.
Desde el REPL clásico hasta bpython, pasando por argparse
,stdin/stdout
y la depuración con pdb
,
ahora dominas el ciclo completo del desarrollo y la prueba en consola.
🧠 Conceptos clave aprendidos
- Qué es la línea de comandos y cómo usar el intérprete de Python (REPL).
- Ejecución de scripts con
python archivo.py
y módulos con-m
. - Lectura y escritura desde
stdin
ystdout
. - Uso de
sys.argv
yargparse
para recibir argumentos CLI. - Funcionamiento del entorno interactivo bpython.
- Uso del depurador
pdb
directamente desde la terminal. - Buenas prácticas con
venv
,pip
, alias y productividad.
Con esto tienes las bases para desarrollar, depurar y automatizar tareas desde la terminal
sin depender de IDEs pesados. 💪
📋 Tablas de referencia rápida
🧾 Comandos esenciales de Python CLI
Comando | Descripción |
---|---|
python | Inicia el intérprete interactivo (REPL) |
python archivo.py | Ejecuta un script Python |
python -m modulo | Ejecuta un módulo o paquete |
python -c "codigo" | Ejecuta una línea de código inline |
python -m pdb archivo.py | Depura un script paso a paso |
python -i script.py | Abre REPL tras ejecutar el script |
python -u script.py | Modo sin buffer (logs en tiempo real) |
🧩 Atajos del REPL estándar
Atajo | Función |
---|---|
Ctrl + D | Salir del REPL (Linux/macOS) |
Ctrl + Z + Enter | Salir del REPL (Windows) |
_ | Devuelve el último resultado |
help() | Abre la ayuda interactiva |
dir(obj) | Lista atributos y métodos |
exit() / quit() | Cierra el intérprete |
💡 Atajos rápidos de bpython
Atajo | Descripción |
---|---|
Ctrl + D | Salir (guardar sesión opcional) |
Ctrl + R | Buscar en historial de comandos |
F2 | Mostrar/ocultar ayuda contextual |
F3 | Guardar sesión actual |
F10 | Copiar código al portapapeles |
Ctrl + L | Limpiar pantalla |
? | Mostrar docstring del objeto |
🪲 Comandos esenciales de pdb
Comando | Acción |
---|---|
n | Avanza a la siguiente línea |
s | Entra en la función |
c | Continúa la ejecución |
b N | Pone un breakpoint en la línea N |
p x | Imprime el valor de x |
l | Lista el código alrededor |
q | Sale del depurador |
🧱 Comandos de entorno virtual y pip
Acción | Comando |
---|---|
Crear entorno virtual | python -m venv .venv |
Activar entorno | source .venv/bin/activate (Linux/macOS) |
Activar entorno | .venv\Scripts\activate (Windows) |
Instalar paquete | pip install nombre |
Guardar dependencias | pip freeze > requirements.txt |
Restaurar entorno | pip install -r requirements.txt |
🧩 Prácticas guiadas — Terminal y bpython
🔹 Ejercicio 1 — Probando el intérprete interactivo
Abre tu terminal y escribe:
python
Luego prueba:
>>> nombre = input("¿Cómo te llamas? ")
>>> print(f"Hola, {nombre}!")
>>> 5 * 10
50
>>> _ + 20
70
💬 Comenta con tus alumnos cómo el símbolo _
guarda el último resultado.
🔹 Ejercicio 2 — Ejecutar scripts desde CLI
Crea un archivo saludo.py
:
# saludo.py
import sys
if len(sys.argv) < 2:
print("Uso: python saludo.py <nombre>")
sys.exit(1)
nombre = sys.argv[1]
print(f"👋 Hola, {nombre}! Bienvenido a Python CLI.")
Ejecuta:
python saludo.py Javier
Resultado:
👋 Hola, Javier! Bienvenido a Python CLI.
🔹 Ejercicio 3 — Explorando con bpython
Instala y abre bpython:
pip install bpython
bpython
Dentro de bpython ejecuta:
>>> import math
>>> math.
# Usa TAB para autocompletar
>>> math.sqrt(16)
4.0
>>> def doble(x): return x*2
>>> list(map(doble, [1,2,3,4]))
[2, 4, 6, 8]
Prueba los atajos: F2 para ver ayuda, Ctrl+L para limpiar pantalla y F10 para copiar el código al portapapeles.
🔹 Ejercicio 4 — Depuración rápida con pdb
Crea un archivo bug.py
:
def sumar(a, b):
return a + b
def main():
x, y = 5, "10" # error: sumar int + str
import pdb; pdb.set_trace()
print(sumar(x, y))
if __name__ == "__main__":
main()
Ejecuta:
python bug.py
En la consola:
(Pdb) p x
5
(Pdb) p y
'10'
(Pdb) c
# Error → TypeError: unsupported operand type(s)
Discute cómo pdb ayuda a inspeccionar variables antes del fallo.
🔹 Ejercicio 5 — Automatización con pipes
Crea un archivo mayus.py
:
import sys
for linea in sys.stdin:
print(linea.upper(), end="")
Prueba:
echo "python es divertido" | python mayus.py
Salida:
PYTHON ES DIVERTIDO
💡 Este ejemplo enseña la diferencia entre programas interactivos y aquellos que procesan stdin
.
🏁 Conclusión
Con esta lección dominas el flujo completo de trabajo en la línea de comandos de Python.
Desde el uso del REPL, bpython
y pdb
hasta el manejo de argumentos y pipes,
tienes ahora la base práctica para trabajar de forma profesional, ágil y eficiente.
El dominio de la consola no solo te ahorrará tiempo: te convertirá en un programador más versátil,
capaz de automatizar, probar y desplegar proyectos en cualquier entorno.
💬 Reto final
Combina todo lo aprendido creando una pequeña herramienta:
# contador.py
"""
Script CLI que cuenta líneas, palabras y caracteres
de un archivo o texto recibido por stdin.
"""
import sys
def contar(texto):
lineas = texto.count("\n") + 1
palabras = len(texto.split())
chars = len(texto)
return lineas, palabras, chars
def main():
data = sys.stdin.read()
l, p, c = contar(data)
print(f"Líneas: {l}, Palabras: {p}, Caracteres: {c}")
if __name__ == "__main__":
main()
Prueba:
cat leccion.txt | python contador.py
Resultado:
Líneas: 42, Palabras: 278, Caracteres: 1963
¡Y listo! Has construido una herramienta CLI completa, procesando datos desde stdin
y devolviendo resultados por stdout
— como los profesionales. 🚀
🐍 ¡Enhorabuena! Has completado la lección “Línea de Comandos de Python”.