Como Crear directorios en python?
El manejo de directorios en python es bastante simple, el objetivo es hacer mas con menos código, así que comenzamos con una versión primitiva de como crear un directorio, usando siempre el paquete “os” que maneja este y muchos otros asuntos:
import os dir crear_directorio(ruta): try: os.makedirs(ruta) except OSError: pass # si no podemos crear la ruta dejamos que pase # si la operación resulto con éxito nos cambiamos al directorio os.chdir(ruta)
Si lo queremos ne menos lineas:
nuevaruta = r'ruta/al/directorio/directorio' if not os.path.exists(nuevaruta): os.makedirs(nuevaruta)
Este ultimo se asegura que la ruta no exista, y si no existe pues la crea. Ahora veamos uno mas compacto aun usando un shell del sistema operativo:
import os os.system("mkdir /ruta/al/directorio")
si dentro de la ruta existe una “carpeta” que no existe esta sera creada! sip así de fácil y divertido.
Como renombrar (mover) un archivo en python
Renombrar un archivo en python puede resultar de usar la misma funcionalidad que se usa para mover un archivo, el truco consiste en “mover” un archivo en el directorio x al mismo directorio x pero con diferente nombre. Todo lo que toma es importar el modulo “shutil” y usar su función “move” que mueve directorios de un lado a otro.
import shutil def move(src, dest): shutil.move(src, dest)
Pero… entonces para que sirve el “os.rename”? Bueno aunque su nombre es mas descriptivo, resulta que el “shutil.move” utiliza el “os.rename” si el directorio fuente es igual al directorio de destino, y utiliza el “shutil.copy2” para copiar los archivos si el directorio es distinto, entonces en “shutil.move” tenemos una forma compacta de ocuparnos de ambos casos.
Como recorrer un directorio en python
Recorrido básico:
import os # Setteamos el directorio raiz a la variable rootDir # En realidad la variable se puede llamar como sea :) rootDir = '.' for dirName, subdirList, fileList in os.walk(rootDir): print('Directorio encontrado: %s' % dirName) for fname in fileList: print('\t%s' % fname)
la función “os.walk” se encarga de la recursividad y en cada iteración nos devuelve los siguientes valores:
- dirName: El siguiente directorio que encontro
- subDirList: Una lista de todos los sub-directorios en el directorio actual.
- fileList: Una lista de archivos en el directorio actual
Otra forma de recorrer los directorios
import os rootDir = '.' for dirName, subdirList, fileList in os.walk(rootDir, topdown=False): print('Found directory: %s' % dirName) for fname in fileList: print('\t%s' % fname)
la diferencia de este snippet de código es que le pasamos el parámetro topdown el cual nos permite recorrer el árbol desde sus “hojas” en lugar de recorrerlo desde la raíz, asi pues, el output es los archivos primero y luego los directorios. Mas eficaz si lo que buscamos puede estar en el ultimo folder del directorio.
Revisar si un directorio o archivo existe en python
Existen varias formas de hacer esta operación, veamos algunas:
- os.path.isfile(ruta)
-
os.path.isfile("foo.txt")
-
- os.access(path, mode)
-
os.access("foo.txt", os.R_OK) # revisa si existe y se puede leer os.access("foo.txt", os.W_OK) # revisa si existe y se puede escribir
-
- open dentro de un try catch
-
try: f = open("foo.txt") except IOError as e: print("Uh oh! Esto no existe")
-
En el caso 1 y 2 ambos regresan un valor booleano según el archivo sea accesible o no, en la mayoría de los casos el ejemplo 1 debería bastar.
Gracias por compartir. Me ha parecido interesante, salvo que descubrí un poco tarde que era Python 3 :). Problemas de novato
Muchas gracias, me sirvió mucho para comprender la navegación por directorios.
disculpa sabes algo de como abrir un archivo pdf ya creado en python utilice FPDF pero no logro hacer que habra el archivo
Hola anonimo amigo:
Claro que si, de hecho hice un post que talvez te ayude:
http://ricardogeek.com/como-crear-documentos-pdf-usando-python/
Saludos.
y como borras el contenido de ese directorio
Buenos días, actualmente me encuentro haciendo practicas con Python 3.8.2 y me surge un problema. He venido trabajando en una pequeña app y he estado trabajando cada funcionalidad con archivos .py de manera independiente e hice un .py como ventana inicial y de ella llamar cada .py. uso la instrucción execfile(‘archivo.py’). Los programs independiente funcionan bien pero cuando lo llamo del .py inical no lo hacen bien, no puedo hacer treeview, radiobutton y otro de manera adecuada. me podrían dar una idea de que puede estar pasando? gracias
intenta esto:
exec(open("./archivo.py").read())