Curso Python DGA 2011/sistemas/manejo sistemas ficheros directorios
De WikiEducator
Contenido
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.basename("/tmp/onedir/otherdir/file1") 'file1' >>> os.path.basename("/tmp/onedir/otherdir/file1/") # cuidado! no se comporta como '''basedir''' de GNU ''
- os.path.dirname(path) - Devuelve la primera parte del path pasado
>>> os.path.dirname("/tmp/onedir/otherdir/file1") '/tmp/onedir/otherdir' >>> os.path.dirname("/tmp/onedir/otherdir/file1/") # cuidado! no se comporta como '''dirname''' de GNU '/tmp/onedir/otherdir/file1'
- 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.expandvars("$PATH:/home/luis/myprog") '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/maven/bin:/opt/ant/bin:/opt/jython:/home/luis/myprog'
- 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.stat("/tmp/file") posix.stat_result(st_mode=33188, st_ino=2761989, st_dev=2053L, st_nlink=1, st_uid=0, st_gid=0, st_size=4, st_atime=1314555833, st_mtime=1314555834, st_ctime=1314557080)
- 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)
>>> for root, dirs, files in os.walk("/tmp/"): ... print("{0} contains: {1}".format(root, ",".join(files)) ... /tmp/ contains: debug.log,gedit.luis.4232724968,file,.X0-lock /tmp/.X11-unix contains: X0 /tmp/.org.chromium.y7ZDIS contains: SingletonSocket,SingletonCookie ..
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.