una renombrar recorrer nombres manejo leer gestion existe directorios directorio copiar comprobar carpetas carpeta archivos python shapefile os.walk

python - renombrar - Necesito la ruta para archivos particulares usando os.walk()



python renombrar archivos (3)

¿Por qué no import glob ?

import glob print(glob.glob(''F:/OTHERS/PHOTOS/Panama//mai13*//*.jpg'') )

y obtengo todos los jpeg que quiero, con ruta absoluta

>>> [''F://OTHERS//PHOTOS//Panama//mai13//03052013271.jpg'', ''F://OTHERS//PHOTOS//Panama//mai13//05052013272.jpg'', ''F://OTHERS//PHOTOS//Panama//mai13//05052013273.jpg'']

Estoy tratando de realizar algún geoprocesamiento. Mi tarea es ubicar todos los shapefiles dentro de un directorio y luego encontrar el nombre completo de la ruta para ese shapefile dentro del directorio. Puedo obtener el nombre del shapefile, pero no sé cómo obtener el nombre de ruta completo para ese shapefile.

shpfiles = [] for path, subdirs, files in os.walk(path): for x in files: if x.endswith(".shp") == True: shpfiles.append[x]


Parece que os.path.abspath(finename) funcionará. Por favor, inténtalo.

shpfiles = [] for path, subdirs, files in os.walk(path): for x in files: if x.endswith(".shp") == True: shpfiles.append(os.path.join(path, x))


os.walk le da la ruta al directorio como el primer valor del bucle, solo use os.path.join() para crear el nombre completo del archivo:

shpfiles = [] for dirpath, subdirs, files in os.walk(path): for x in files: if x.endswith(".shp"): shpfiles.append(os.path.join(dirpath, x))

dirpath el nombre de path en el bucle a dirpath para no entrar en conflicto con la variable de path que ya estaba pasando a os.walk() .

Tenga en cuenta que no es necesario probar si el resultado de .endswith() == True ; if ya lo hace por usted, la parte == True es completamente redundante.

Puede usar .extend() y una expresión generadora para hacer que el código anterior sea un poco más compacto:

shpfiles = [] for dirpath, subdirs, files in os.walk(path): shpfiles.extend(os.path.join(dirpath, x) for x in files if x.endswith(".shp"))

o incluso como una lista de comprensión:

shpfiles = [os.path.join(d, x) for d, dirs, files in os.walk(path) for x in files if x.endswith(".shp")]