Curso Python DGA 2011/sistemas/manejo sistemas ficheros directorios

Manejo de sistemas de ficheros y directorios
Como ya sabemos, uno de los puntos fuertes de python es que viene con "baterías incluidas". Para el manejor de ficheros y directorios, python provee numerosas funciones y módulos para facilitarnos la vida. En esta sección enumeraremos algunas de ellas.

Trabajando con paths

 * os.path.abspath(path) - Devuelve el path absoluto del path pasado (a partir del directorio de trabajo actual)
 * os.path.basename(path) - Devuelve la última parte del path pasado
 * os.path.dirname(path) - Devuelve la primera parte del path pasado
 * os.path.exists(path) - devuelve true si el path existe
 * os.path.expandvars(path) - devuelve el argumento pasado, pero con variables de entorno tipo $VAR o ${VAR} (o %VAR% en windows) sustituidas
 * os.path.getsize(path) - devuelve el tamaño en bytes de un archivo
 * os.path.isdir(path) - true si el path apunta a un directorio
 * os.path.islink(path) - true si el path apunta a un link simbólico
 * os.path.join(path1[, path2[, ...]]) - une componentes de path
 * os.path.normpath(path) - normaliza un path, eliminando separadores duplicados, transformando "/" en "\" en windows, etc
 * os.path.realpath(path) - normaliza un path, resolviendo links


 * glob.glob(pathname) - Devuelve una lista de paths que matchean con el path pasado que puede usar wildcards. Ej: "/home/luis/images/*/*.gif"

Trabajando con sistemas de ficheros

 * os.access(path, mode) - comprueba el acceso a un fichero (ej, comprobar permiso de lectura, escritura, etc)
 * os.getcwd - devuelve el directorio de trabajo actual
 * os.chdir(path) - cambia el directorio de trabajo actual a path
 * os.chroot(path) - cambia el directorio root del proceso actual (solo unix)
 * os.chmod(path, mode) - cambia el modo de acceso del path (se pueden usar constantes stat.S_IXXXX)
 * os.chown(path, uid, gid) - cambia el proopietario del path
 * os.link(source, link_name) y os.symlink(source, link_name) - crean links 'duros' y simbólicos, respectivamente
 * os.listdir(path) - lista los nombres de las entradas del directorio especificado
 * os.mkdir(path[, mode]) y os.mkdirs(path[, mode]) - crean directorios con el modo especificado. mkdirs crea los directorios intermedios si no existen.
 * os.remove(path) - elimina el path (lanza OSError si no es un fichero)
 * os.removedirs(path) - intenta eliminar directorios recursivamente hasta que un directorio padre no está vacío
 * os.rename(src, dst) y os.renames(src, dst) - renombran ficheros o directorios. renames renombra directorios intermedios
 * os.rmdir(path) - elimina un directorio
 * os.stat - devuelve estructura con información del path
 * os.tmpfile - crea un nuevo fichero y lo abre en modo actualización ("w+b") y se elimina una vez que no queden descriptores abiertos
 * os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) - Generador que recorre la estructura de directorios y ficheros a partir del directorio pasado (de menos profundidad a más profundidad, usar topdown=False para lo contrario)

módulo shutil

 * shutil.copy(src, dst) y shutil.copy2(src, dst). Copian el fichero src en el directorio o fichero dst. copy2 copia adicionalmente los permisos, flags, y tiempos de acceso y modificación.
 * shutil.copytree(src, dst[, symlinks=False[, ignore=None]]) - Copia recursivamente el directorio src en dst


 * shutil.rmtree(path[, ignore_errors[, onerror]]) - Elimina recursivamente el directorio path
 * shutil.move(src, dst) - Mueve un fichero o directorio
 * shutil.make_archive - Crea archivos tar y zip.