Cargando múltiples CSV en QGIS 3

Sep 05 2020

He estado buscando la forma más rápida de cargar varios archivos CSV en QGIS 3.10.

Mis archivos CSV constan de 5 columnas:

Brand Name | Branch Name | Address | Latitude | Longitude

Estoy usando Mac y es "files:///"posible que no funcione. ¿Alguna sugerencia?

Vi código relacionado con esto y lo seguí. Esto es lo que se me ocurrió:

import glob, os

csv_files="Users/ajie/Documents/RestoBrand_Py/SAMPLE CSVs/"
os.chdir(csv_files)

for fname in glob.glob("*csv"):
   uri = "files:///" + csv_files + fname + "?delimiter=%s&crs=epsg:4326&xField=%s&yField=%s" % (",",",",",","x","y")
   name = fname.replace('csv', '')
   lyr = QgsVectorLayer(uri, name, 'delimitedtext')
   QgsProject.instance().addMapLayer(lyr)

Aquí está el error

Respuestas

2 underdark Sep 06 2020 at 09:39

Como se menciona en los comentarios de @ user2856, hay demasiados argumentos en la llamada de formato. Para que el proceso sea más transparente, puede codificar todos los parámetros. Esto debería funcionar (aunque no se probó en Mac):

import os

directory = "Users/ajie/Documents/RestoBrand_Py/SAMPLE CSVs/"
 
def load_and_configure(path):
    path = os.path.join(directory, filename)
    uri = 'file:///' + path + "?type=csv&escape=&useHeader=yes&detectTypes=yes"
    uri = uri + "&crs=EPSG:4326&xField=Longitude&yField=Latitude"
    vlayer = QgsVectorLayer(uri, filename, "delimitedtext")
    QgsProject.instance().addMapLayer(vlayer)
 
for filename in os.listdir(directory):
    if filename.endswith(".csv"):
        load_and_configure(filename)