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