Windows o Linux

Chema Cortés ch3m4 en ch3m4.org
Lun Jun 16 19:08:56 CEST 2003


oscar escribió:
> Lo primero no quiero crear polemica con este asunto( me refiero al
> asunto del correo :-D ).
> Tan solo queria saber si ahi alguna forma en python, de saber si el
> sistema que esta ejecutando la aplicacion es windoes o linux/Unix,

Ya te han dicho que con sys.platform puedes saber en qué plataformas andas.

> debido a que hecho una aplicacion, pero debido a que los caracteres de
> direcctorios me cambian, tendria que hacer dos programas iguales,
> cambiando los caracteres, pero me gustaria que solo fuera uno, y que el
> mismo fuera capaz de distinguirlo.

Como también te han dicho, usa el os y os.path "PARA TODO", y puede que 
incluso te valga también para Mac :-) Te recomiendo que te leas la 
documentación por no voy a comentar todo lo que hay.

Lo primero, es aceptado utilizar '/' como separador de directorios en 
windows, ya que resulta más simple que andar con escapes '\\'. Por 
ejemplo, estas rutas apuntan al mismo fichero en windows:

"c:\\autoexec.bat"
r"c:\autoexec.bat"
"c:/autoexec.bat"

No utilices indiscrimidamente el os.sep (ni mucho menos el os.pathsep 
que te han dicho por ahí que nada tiene con separar directorios). Es 
conveniente que trocees las rutas con las funciones .split:

directorio, fichero = os.path.split(ruta)
raiz, extension     = os.path.splitext(ruta)
disco, resto        = os.path.splitdrive(ruta)

Combínalas para obtener el resultado que buscas.

directorio, fichero = os.path.split(ruta)
nombre_base, extension = os.path.split(fichero)


De modo contrario, para unir dos rutas utiliza:

os.path.join(ruta1, ruta2)


Si necesitas convertir entre ruta relativa y absouluta, o quieres 
normalizar la ruta que estás manejando:

os.path.isabs    - te dirá si es una ruta absoluta o relativa
os.path.abspath  - te pasa de ruta relativa a absoluta
os.path.normpath - te "limpia" la ruta


Unos ejemplos:

CURDIR=os.path.abspath(os.curdir)  # ruta absoluta del directorio actual

CURDIR_PADRE = os.path.join(CURDIR, os.pardir) # directorio padre
   # en windows/unix os.pardir=="..", en mac os.pardir=="::"


fich="c:/autoexec.bat"  # por poner algún nombre de fichero
os.path.splitext(fich)[1] --> ".bat"
os.path.split(fich)       --> ( 'c:/', 'autoxec.bat' )

os.path.normpath(os.path.join('/usr',os.pardir,'lib')) --> "/lib"


Pensando un poco, se puede llegar a trastear con las rutas sin que 
dependa para nada de la plataforma donde estés trabajando.


------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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