IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Recherche d'un module python pour télécharger plusieurs fichiers d'un seul coup dans plusieurs répertoires


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Par défaut Recherche d'un module python pour télécharger plusieurs fichiers d'un seul coup dans plusieurs répertoires
    Bonjour à tous.

    Je précise que je suis un débutant en python et je n'y connais pas grand chose en réseaux.

    Je vais d'abord expliciter les faits.

    Je dois actuellement télécharger plusieurs fichiers issus du cadastre à partir de cette URL :https://cadastre.data.gouv.fr/data/e...json/communes/.
    En allant plus loin dans le répertoire on peut sélectionner le code INSEE de la commune à partir de laquelle on cherche à extraire le cadastre.
    En entrant dans le répertoire on a quatre fichiers différents qui constituent chacun une partie du cadastre (battît, parcelles,etc..)

    Ce que je cherche à faire.
    A partir d'un fichier excel qui récence des codes Insee de communes, je voulais savoir s'il serait possible d'effectuer une requête sur le site afin de télécharger les fichiers du cadastre d'après cette même liste.

    Auriez-vous donc des modules python à me conseiller qui me permettraient de faire des itérations sur les répertoires de ce site et de télécharger les fichiers quand il trouve une correspondance avec une liste ?
    J'avais déjà en tête de faire une itération à partir du module CSV et de boucler sur chacun des répertoires.

    Merci beaucoup !

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Par exemple, avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import subprocess
     
    url="https://cadastre.data.gouv.fr/data/etalab-cadastre/2018-04-03/geojson/communes/56/56001/"
     
    subprocess.call(["wget", "-r", "-np", "-nd", "-A.json.gz", url])
    Je récupère 29 fichiers en json.gz.
    Un début ?

  3. #3
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Par défaut
    Bonjour.
    J'ai essayé ton script de mon coté, mais il me donne le message d'erreur suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Traceback (most recent call last):
      File "C:\Users\pidega\AppData\Local\Programs\Python\Python36\tets.py", line 5, in <module>
        subprocess.call(["wget", "-r", "-np", "-nd", "-A.json.gz", url])
      File "C:\Users\pidega\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 267, in call
        with Popen(*popenargs, **kwargs) as p:
      File "C:\Users\pidega\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 709, in __init__
        restore_signals, start_new_session)
      File "C:\Users\pidega\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 997, in _execute_child
        startupinfo)
    FileNotFoundError: [WinError 2] Le fichier spécifié est introuvable

    J'ai bien vérifié que le module était installé en lançant un script avec uniquement la première ligne. Je suis aussi allé voir s 'il était bien installé dans les fichiers de librairies.
    D'où viendrait le problème ?

    Je suis donc allé regardé sur internet pour voir comment fonctionnait ce module : https://docs.python.org/3.7/library/subprocess.html
    Si j'ai bien compris, il permet de lancer des requêtes et ensuite de récupérer les résultats de cette dernière ? Que ce soit une requête batch, une url à lancer.

    Merci !

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Flûte ! Serait-ce une commande spécifique à Linux ?
    Une idée peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import wget
    wget.download(url)
    A essayer, je n'ai pas windows. J'essaierai du boulot sinon cet après-midi.
    Sinon, il y a des choses comme urllib.

  5. #5
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Par défaut
    J'ai pu essayer sur un lien et ça marche !

    Au lieu d'effectuer la requête sur le premier lien je l'ai lancée directement sur le lien téléchargement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://cadastre.data.gouv.fr/data/etalab-cadastre/2018-10-01/geojson/communes/23/23015/cadastre-23015-prefixes_sections.json.gz
    Il me resterait à boucler sur des parties précises de cette url pour automatiser tout ça.

    Je reviens bientôt avec du nouveau

    Merci encore!

  6. #6
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Moi, ce que je trouverais rigolo, c'est de représenter cela sous forme de carte.
    Je ne trouve pas de module spécifique.
    Je me réponds tout seul : j'ai réussi à afficher une commune. Si cela intéresse qqn...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import json  
    import gzip
    import matplotlib.pyplot as plt
     
    fich = "cadastre-56001-communes.json.gz"
    with gzip.open(fich, "rb") as f:
        data = json.loads(f.read(), encoding="utf-8")
    features = (data["features"])[0]
    geometry = features["geometry"]
    coordonnees = (geometry["coordinates"])[0][0]
    #print(coordonnees)
    Lx=[]
    Ly=[]
    Lz=[]
    for elem in coordonnees:
        Lx.append(elem[0])
        Ly.append(elem[1])
    plt.plot(Lx,Ly)
    plt.gca().set_aspect('equal')
    plt.show()
    Le département du Morbihan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    import json  
    import gzip
    import matplotlib.pyplot as plt
     
    rep = "/home/marco5/Bureau/cadastre/morbihan-communes/"
    fich = "cadastre-"
    comm = "-communes.json.gz"
    for i in range(56001,56265):
        try:
            with gzip.open(rep+fich+str(i)+comm, "rb") as f:
                data = json.loads(f.read(), encoding="utf-8")
            features = (data["features"])[0]
            geometry = features["geometry"]
            coordonnees = (geometry["coordinates"])[0][0]
            #print(coordonnees)
            Lx=[]
            Ly=[]
            Lz=[]
            for elem in coordonnees:
                Lx.append(elem[0])
                Ly.append(elem[1])
            plt.plot(Lx,Ly)
            plt.gca().set_aspect('equal')
        except:
            pass
    plt.show()

  7. #7
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Par défaut
    Hello.
    Pour aller plus loin dans l'utilisation des données géospatiales avec python
    http://www.portailsig.org/content/le...uid-quando-ubi

  8. #8
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Citation Envoyé par gabpedi92 Voir le message
    Hello.
    Pour aller plus loin dans l'utilisation des données géospatiales avec python
    http://www.portailsig.org/content/le...uid-quando-ubi
    Oui, j'avais vu mais j'ai préféré matplotlib que je connais déjà.
    Si tu as des exemples de traitement avec d'autres modules, je suis intéressé.

  9. #9
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Par défaut
    Ça dépend après de ce que tu cherche à faire.

    Cartes web ? Traitements géospatiaux? Comparaisons de données?

  10. #10
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Rien de particulier : juste pour le plaisir.

  11. #11
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Par défaut
    Si tu ne connais pas encore je ne peux que te conseiller d'éssayer GeoDjango : https://docs.djangoproject.com/en/2.1/ref/contrib/gis/.
    C'est une version du fameux framework développé spécialement pour le webmapping avec une pléthore de modules et de fonctions!

  12. #12
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Je ne connaissais pas mais cela me semble une véritable usine à gaz.

  13. #13
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Par défaut
    Hello !
    Je relance le sujet (n'hésitez pas à le déposer dans un autres threat si besoin est).

    Voici une librairie python qui permet de manipuler les objets géographiques : http://geopandas.org/install.html
    Je n'ai pas encore eu le loisir de l'essayer.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/06/2014, 15h47
  2. Réponses: 2
    Dernier message: 15/05/2014, 11h58
  3. traiter plusieurs fichiers d'un seul coup
    Par hajarita dans le forum Langage
    Réponses: 15
    Dernier message: 24/05/2012, 09h08
  4. Vérifier/uploader plusieurs fichier d'un seul coup ?
    Par Marmotton76 dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2011, 10h04
  5. Modifier les propriétés de plusieurs fichiers en un seul coup
    Par 00Dexter00 dans le forum SharePoint
    Réponses: 4
    Dernier message: 08/12/2009, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo