viernes, 14 de mayo de 2010

Consola desde python

Para ejecutar en una consola desde python:
import os
os.system(orden)

donde orden es un string con cualquier comando válido:
orden = "ls *.png"
orden = "rm *.*~"

viernes, 16 de abril de 2010

Acentos en matplolib

Al fin aprendí como hacer acentos en matplotlib:
http://stackoverflow.com/questions/2406700/accented-characters-in-matplotlib

y
http://matplotlib.sourceforge.net/users/mathtext.html
tienen todos los detalles.

Hay 2 formas, pero lo más facil es:

1- Declarar caracteres "extraños" introduciendo como siempre en el encabezado
# -*- coding: utf-8 -*-

2- Declarar el string como unicode mediante u'string'
u"Brújula es esdrújula"

viernes, 19 de febrero de 2010

xargs

Tras cometer algunos errores, empiezo a apreciar la real utilidad de xargs.
Harta información en http://systemadmin.es/2009/04/uso-de-xargs-herramientas-unix-ii.

En general:
Crea una lista con los argumentos anteriores, para pasarlas al comando siguiente
Por ejemplo:
rm * es equivalente a ls * | rm xargs

Opciones importantes
-t: Muestra el comando con las opciones y luego lo ejecuta.
-n: Permite definir el número de argumentos que vemos a pasar a cada comando.
-I: Permite definir donde se van a definir los parámetros.
-P: Permite definir el número de procesos paralelos a lanzar al mismo tiempo.

Por ejemplo:

ls *.c3p0 | xargs -p python ejecutar.py
Muestra python ejecutar.py uno.c3p0 dos.c3p0 tres.c3p0 (y lo ejecuta)

ls *.c3p0 | xargs -n1 python ejecutar.py
Muestra python ejecutar.py uno.c3p0 (y lo ejecuta)
Muestra python ejecutar.py dos.c3p0 (y lo ejecuta)
Muestra python ejecutar.py tres.c3p0 (y lo ejecuta)

ls *.py | xargs -I python ARG uno.c3p0
(para aplicar varios archivos python sobre el archivo uno.c3p0).

ls *.c3p0 | xargs -P3 -n1 python ejecutar.py
Muestra python ejecutar.py uno.c3p0 (y lo ejecuta sin esperar finalización)
Muestra python ejecutar.py dos.c3p0 (y lo ejecuta sin esperar finalización)
Muestra python ejecutar.py tres.c3p0 (y lo ejecuta sin esperar finalización)

miércoles, 3 de febrero de 2010

Apuntes de Bash - 2

Redirección

Cada programa tiene asociado una entrada, una salida y una salida de errores. Por defecto, estas son el teclado, la consola y la consola, resp.

Para cambiar el flujo de entrada, se usa <.
Para cambiar el flujo de salida, se usa > (o >> si no se desea sobreescribir).
Para cambiar el flujo de errores, se usa > (o >> si no se desea sobreescribir).

Ejemplos:

cat < txt_old > txt_new 2> txt_errores (sobreescribe los archivos txt_new y txt_errores si ya existen).

cat < txt_old >> txt_new 2>> txt_errores (agrega textos al final de archivos txt_new y txt_errores si ya existen).

Pipes
Para usar la salida estándar de un programa en la entrada estándar de otro programa se usa el pipeline: |
|
Ejemplos:
ls -la | more (lista los archivos con detalle y los muestra poco a poco).
ps -e | grep (lista los procesos y luego entre ellos selecciona los de nombre que contienen el

Apuntes de Bash - 1

Comodines de reemplazo

? : Un carácter
* : Cero o más carácteres.
[conjunto] : caracteres en conjunto. Por ejemplo, [0-9], [a-z], [A-Z], o simplemente los carácteres deseados,[aeiou].
[!conjunto] : caracteres no en conjunto.

Por ejemplo, si queremos tener en orden los archivos 00.txt, 01.txt, ..., 09.txt, 10.txt, 11.txt, etc.. conviene hacer los siguiente:
ls [01]*
si solo hacemos
ls *
el orden no queda bien definido (puede mostrar 00.txt, 10.txt, 01.txt, 11.txt, etc.)
Una forma más exacta de listar los resultados es:
ls [01][0-9].txt

Comodín de expansión
{conjunto} : Fuerza la expansión de la palabra correspondiente usando las opciones del conjunto.
Ejemplos:
echo p{i,o}ng (entrega ping pong)
echo ha{b..d}a (entrega haba, haca, hada)

jueves, 28 de enero de 2010

Para pillar errores o bugs rápidamente

Nada mejor que usar ipython y el debugger pdb, para que la consola tenga las variables donde se cayó:

ipython -pdb IterarGSH.py

Redimensionar imagenes

Este es un truco muy bueno, que no quiero que se me olvide:

$ sudo apt-get install nautilus-image-converter

instala en el nautilus de ubuntu una opción para redimensionar y rotar las fotos; muy bueno y práctico!