Article View: es.comp.os.linux.programacion
Article #13140Re: [LARGO] Re: [python] De shell a python
From: Fernand0
Date: Mon, 19 Mar 2001 12:07
Date: Mon, 19 Mar 2001 12:07
197 lines
7414 bytes
7414 bytes
Hola,
existe lista de correo en castellano sobre python ?
valdr�a la pena hacer una ??
--
Fernand0
Jes�s Carrete Monta�a <kuantiko@escomposlinux.org> wrote:
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>>>>>> "Santiago" == Santiago Romero <sromero@escomposlinux.org> writes:
>
> Santiago> Lo que sigue son comandos de ejemplo para pasar a
> Santiago> python:
>
> Santiago> echo "aeiou" > fichero echo "mas_aeiou" >> fichero
>
>f=open("fichero","r+") #Abrimos el fichero
>f.seek(0,2) #Nos colocamos al final
>f.write("aeiou") #escribimos
>f.write("mas_aeiou") #seguimos escribiendo
>f.close() #cerramos el fichero
>
> Santiago> variable=`grep cadena fichero`
>
>import re #M�dulo de expresiones regulares
>#En realidad para buscar una cadena basta el m�dulo string, pero ya
>#puestos vamos a buscar una regexp
>
>Regexp=re.compile("^ae{3}i+$")#No es estrictamente necesario compilar,
>#pero si acelera bastante el proceso cuando se busca varias veces
>
>f=open("fichero","r") #Abrimos el fichero
>Variable=[]
>while 1:
> Read=f.readline() #Leemos una l�nea por vez
> if Read=='': break #Si hay un EOF salimso del bucle
> Result=Regexp.search(Read)#Aplicamos la regexp a la l�nea
> if Result==None: continue #Pasamos a la siguiente si no coincide
> Variable.append(Result.group(0)) #Si coincide a�adimos la l�nea
>f.close()#cerramos el fichero
>#Ahora Variable tendr� el valor de una lista de las l�neas que coincidieron
>
> Santiago> ficheros=`ls *.c`
>
>import os
>Ficheros=os.listdir(".") #Listado del directorio
>import re
>for Fichero in Ficheros:
> if re.search("^.*?\.c$", Fichero)==None: Ficheros.remove(Fichero)
>#Hemos eliminado todos los archivos que no sean .c
>
> Santiago> for i in `find . -name "*.c"`; do vim $i; done;
>
>import os
>Ficheros=os.listdir(".")
>import re
>for Fichero in Ficheros:
> if re.search("^.*?\.c$", Fichero)==None: Ficheros.remove(Fichero)
>#Hasta aqu� como antes
>for Fichero in Ficheros:
> os.system("emacs "+Fichero)
>#Humm... noto una peque�a diferencia, pero d�nde estar�... XD
>
>Aprovecho para decir que existe vim-python, que permite controlar vim
>desde python.
>
> Santiago> cat fichero.txt | cut -f 2 -d " "
>
>import string
>f=open("fichero","r")
>while 1:
> Line=f.readline() #podr�amos usar readlines(), pero se puede
> #desbordar la memoria
> if Line='': break
> List=string.split(Line," ")#eparamos los campos
> print List[1] #e imprimimos el que deseemos
>f.close()
>
> Santiago> if [ -t fichero ]; then echo "Fichero existe"; fi
>
>import os.path
>if os.path.exists("fichero"): print "Fichero existe"
>
> Santiago> comando &
>
>import Threading
>import os #se pueden importar varios en la misma l�nea, pero no me gusta XD
>for Threading import *
>NuevoThread=Thread(None,os.system,"NuevoThread",("comando"))
>#Llamamos a un nuevo thread para ejecutar el comando
>
> Santiago> # �tal vez exista argc, como en C, para resolver esta? :
>
>Existe sys.argv, y len(sys.argv) es argc :-).
>
> Santiago> if test -z "$*"; then echo "Uso: programa argumento1
> Santiago> argumento2"; fi
>
>No s� lo que significa eso en bash, pero supongo que algo como:
>
>import sys
>if len(sys.argv) != 3:
> print "Uso : "+sys.argv[0]+" argumento1 argumento2"
> sys.exit(1)
>
> Santiago> - �C�mo puedo imprimir el valor de una matrix sin hacer
> Santiago> un bucle que la recorra? (como en matlab, tal vez no se
> Santiago> pueda).
>
>Matriz=[1,2,4,5,6]
>print Matriz
>
> �Cu�l es el problema?
>
> Santiago> Esto es todo lo que me viene por ahora a la
> Santiago> memoria... :)
>
> Te habr�s quedado descansado XDD
>
> Santiago> El problema es que no s� si debo usar una orden tipo
> Santiago> "exec" para ejecutar el comando de shell, o si existen
> Santiago> ordenes similares en python que me permitan hacer esas
> Santiago> cosas sin darle 2000 vueltas al asunto, si puedo
> Santiago> conseguir que una variable de python valga la salida de
> Santiago> ese comando (ej var=`ls *.c`), etc.
>
> Tienes todas las opciones. Desde os.system() (igual al
>system() de C), pasando por popen() para abrir una pipe, a las
>funciones de os y os.path para manejo de archivos. Ya para terminar,
>que voy a ganar el premio al mensaje co�azo del mes, te pego un
>peque�o ejemplo de script que hice para adecuar los permisos de un
>directorio y sus archivos para subirlos a una web:
>
>++++
>#!/usr/bin/python
>
>import os
>import sys
>import os.path
>
>def BajaDir(Directorio):
> try:
> os.chdir(Directorio)
> except OSError:
> print Directorio,"- No se pudo abrir el directorio."
> Lista=os.listdir(Directorio)
> for Fichero in Lista:
> if os.path.isdir(Fichero):
> Lista2=os.listdir(Fichero)
> for Fichero2 in Lista2:
> NombreFichero=Fichero+"/"+Fichero2
> Lista.append(NombreFichero)
> for Fichero in Lista:
> CambiaPermisos(Fichero)
>
>def CambiaPermisos(Fichero):
> if os.path.isdir(Fichero):
> os.chmod(Fichero,0755)
> else:
> os.chmod(Fichero,0644)
>
>if len(sys.argv) < 2:
> print "Debe especificar un directorio."
> sys.exit(1)
>
>BajaDir(sys.argv[1])
>++++
>
>Un saludo.
>
>P.D.: No he probado los programas, podr�an contener alg�n error accidental,
>pero deber�a ser trivial. En cualquier caso si no puedes solucionarlo
>avisa. Ah, y tambi�n falta control de errores al abrir archivos y tal,
>pero si lo pongo el mensaje se eterniza.
>
>P.D2: Te aconsejo un vistacillo a la tutorial y a la library reference que
>cuelgan de /usr/doc/python/html/index.html
>- --
>"!Dios aleje de nosotros la serenidad de los ignorantes!
>�Dios aparte de nosotros la paz de los cobardes!" (De Gasparin)
>Jes�s Carrete Monta�a (Kuantiko) <kuantiko@escomposlinux.org>
>LRU #158442 -> I use free software. | PGP Key -> pgp.rediris.es
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v1.0.4 (GNU/Linux)
>Comment: Processed by Mailcrypt and GnuPG
>
>iD8DBQE6tLPQfUtQQKOnZ1IRAiXKAJ9mGL3K/6tdzivOHcyt/ajtB6h9LgCfXvvQ
>aM8kN0yra6ECDBwd3SJLuVY=
>=yZWj
>-----END PGP SIGNATURE-----
--
Fernand0
Technical Details
Message-ID:
<slrn9bbshn.n1o.Fernand0@viernes.cps.unizar.es>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-03!supernews.com!nntp.cs.ubc.ca!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!opentransit.net!jussieu.fr!news.rediris.es!news.unizar.es!Fernand0References:
<bl3299.vc.ln@127.0.0.1> <87u24r43yx.fsf@relativistic.homeip.net>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,4729121b4927b783 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2001-03-19 03:56:07 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-03!supernews.com!nntp.cs.ubc.ca!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!opentransit.net!jussieu.fr!news.rediris.es!news.unizar.es!Fernand0 From: Fernand0@my-deja.com (Fernand0) Newsgroups: es.comp.os.linux.programacion Subject: Re: [LARGO] Re: [python] De shell a python Date: 19 Mar 2001 12:07:50 GMT Organization: No Lines: 197 Message-ID: <slrn9bbshn.n1o.Fernand0@viernes.cps.unizar.es> References: <bl3299.vc.ln@127.0.0.1> <87u24r43yx.fsf@relativistic.homeip.net> NNTP-Posting-Host: viernes.cps.unizar.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.unizar.es 985003670 8722 155.210.152.24 (19 Mar 2001 12:07:50 GMT) X-Complaints-To: usenet@news.unizar.es NNTP-Posting-Date: 19 Mar 2001 12:07:50 GMT User-Agent: slrn/0.9.6.2 (Linux)