Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Linux
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #17  
Antiguo 11-09-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
A modo comparativo, lo mismo, con python

NOTA: Para hacer llamadas a lineas de comandos, se usa subprocess, o os.popen, pero dio la casualidad que "history" es un comando desactivado sino se esta en modo interactivo, osea, es dificil de hacerle programacion. Normalmente uno haria:

Código PHP:
import os

resultado
=os.popen("ls").read()

print 
resultado 
Pero "history" es un maldito que no se deja asi. Una fregada del bash.

Asi que uno puede hacer:

Código PHP:
history resultado.txt 
Para tener el resultado en un archivo de texto. Desde ahi, entrar a python y:

1. Cargar el archivo, separado por lineas, en una estructura de lista:

Código PHP:
lineas open('resultado.txt').readlines() 
Una lista se lee asi:

http://effbot.org/zone/python-list.htm

2. Ahora le mochamos los numeros y dejamos los comandos. La solucion "simple" es partir cada linea y construir otra lista

Le hago trim a cada linea, parto con split (por defecto parte por 1 espacio), y cojo el segundo resultado (split devuelve otra lista asi: ['1','comando'])

Código PHP:
comandos = [linea.strip().split()[1] for linea in lineas
Código:
> print comandos[:5]
>>> ['ls', 'chflags', 'ls', 'python', 'easy_install']
3. Ahora viene la parte de "conocer realmente python" o tambien llamada " usar google". Como se cuantas veces cada item de la lista se repite? El algoritmo es facil de armar, pero la idea que llevo es hacer lo mismo, con comandos de pocas lineas. Pero con python, las baterias estan incluidas!:

collections.Counter me devuelve un diccionario, con llave= comando, valor = cuantas veces se repite

Código PHP:
import collections

rank
=collections.Counter(comandos
Y ahora como ordenarlo. Otro algoritmo facil a punta de ciclos FOR, pero que carajos, python tiene baterias incluidas, asi que googleando:

Código PHP:
from operator import itemgetter

ordenado 
sorted(rank.items(), key=itemgetter(1)) 
Esto me ordena usando una funcion de ordenacion, enviada como parametro de comparacion (un truco de programacion funcional, creo que ya es mas conocido). Esto me ordena de menor a mayor. Como obtengo los mas usados? Lo puede reversar, y sacar los primeros (tail)

Código PHP:
ordenado.reverse()

print 
ordenado[:10]
>> [(
'hg'988),
 (
'cd'709),
 (
'sudo'648),
 (
'st'430),
 (
'ls'354),
 (
'ci'275),
 (
'python'223),
 (
'push'212),
 (
'clear;'188),
 (
'heroku'182)] 

Lo que me gusta de hacerlo con python, a pesar de que igual hay que aprender del lenguaje y las librerias (y que ciertas cosas obviamente sale mejor o mas rapido directamente por comandos establecidos) es que puedo interactuar con los datos. En cualquier momento, doy un print, saco los 10 primeros de la lista, le hago un for, etc... es mucho mas practico en muchos casos.

La otra razon, es que python se puede resumir en: Maneja lista, maneja diccionario. Practicamente todo devuelve listas y diccionarios. Es mucho mas intuitivo que operar siempre con cadenas y switches, y mas facil de operar. Es algo que se vuelve obvio cuando se entra a linea de comandos interactivo de python y se hacen las llamadas a las funciones: listas, diccionarios, todo el tiempo. Es muy practico!
__________________
El malabarista.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comandos en Terminal Server Draker Varios 4 16-10-2008 19:35:10
Mezclar Php y JavaScript lucasarts_18 PHP 9 13-03-2007 21:38:10
Mezclar Delphi5 y Visual Basic 6.0 guiweb Varios 4 23-11-2006 14:50:36
es posible mezclar colores a los tform ronimaxh Varios 5 01-02-2006 19:36:14
Mezclar videos walito Varios 2 21-01-2006 01:21:38


La franja horaria es GMT +2. Ahora son las 19:46:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi