[Python-es] Dudas de principiante :)

Esteban Manchado Velázquez zoso en demiurgo.org
Mar Mayo 21 12:57:13 CEST 2002


At 12:14 21/05/02 +0200, you wrote:
>[...]
>1) quisiera copiar un fichero de un sitio a otro, la
>unica solucion encontrada es abrir el origen y el
>destino y copiar todo de uno a otro (el que mas habla
>sobre esto es el enlace que habeis mandado de "how to
>think as Computer Scientist", de donde es esta
>solucion):
>[...]
>no me parece del todo bonita e imagino que podria
>hacerlo de alguna otra forma mas elegante, quizas
>hacer una llamada al sistema que haga la copia del
>fichero como tal? no se si es la mejor opcion, con un
>directorio completo seria igual?

    Depende de lo que quieras hacer, como todo. Supongo que lo puedes hacer 
así o quizás con algún paquete tipo File de Perl (lo siento, también soy 
novato en Python ;-P ). Acabo de encontrar un módulo llamado "shutil" que 
contiene una función de copia, no sé si esa es la que recomiendan los 
expertos. Parece bastante apropiado.

>1.1) dentro de esta opcion, para decirle que si ese
>fichero existe ya en destino que haga un backup del
>antiguo, creo que si deberia hacer una llamada a
>sistema rename, no?

    Pues supongo que sí, no creo que haya una función que haga *ambas* cosas.

>1.2) para decir los directorios de origen y destino,
>simplemente pongo con comillas todo el path?
>"bin/origen.txt" "home/attila/destino.txt" asi?

    Tienes un ejemplo en 
http://pyspanishdoc.sourceforge.net/lib/shutil-example.html. Iba a decirte 
que sí, pero ver el ejemplo, me acaba de recordar que no deberías (en 
general) usar directamente los caracteres "/" en las rutas de los ficheros. 
Si te preocupa que funcione en Mac, Windows, etc., deberías usar 
"os.path.join('bin', 'origen.txt')".

>2) para el mismo tema de ficheros, pero para el caso
>de tener que buscar un determinado texto en los
>ficheros para modificarlos, es decir, retocar ficheros
>de configuracion, no se como buscar una linea
>determinada, he intentado encontrar algo en la
>biblioteca de expresiones regulares, pero no me ha
>quedado claro como hacerlo:
>por ejemplo saber si en determinado fichero, nt.conf
>existe la linea que diga lo que sea, si existe veo que
>tiene y si no, aniado la linea que yo quiero. Veo que
>deberia abrir el fichero entero y meterlo en una
>variable y buscar a partir de ahi,

    ¿? No creo que haga falta. No sé si Python tiene una manera mejor, pero 
yo leería el fichero, metiendo las líneas en uno temporal de salida, y 
añadiendo o cambiando las que quisiera mientras tanto. Al final, 
renombraría el temporal al fichero original. Tendrías que tener cuidado con 
los permisos del original, y podrías descartar el temporal si vieras que no 
ha sufrido ningún cambio.

--
Esteban Manchado Velázquez <zoso*demiurgo*org> - http://www.demiurgo.org
No software patents in Europe! - eurolinux.org - proinnova.hispalinux.es
Join Amnesty International - http://amnesty.org/actnow/join.htm





Más información sobre la lista de distribución Python-es