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")]