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 :

ouvrir des repertoires en intéraction avec un fichier shape


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut ouvrir des repertoires en intéraction avec un fichier shape
    Bonjour,
    J'essaie d'écrire un code python dont l'objectif consiste à ouvrir les répertoires windows correspondants aux communes que je sélectionne dans une couche Shape "commune" (avec le logiciel Qgis).
    Je précise que la couche commune contient une colonne X avec les chemins d'accès aux répertoires des communes (exemple de chemin: V:/02_doc/commune1/)

    Voici mon code actuel. Il ne fonctionne pas (il ouvre ... le répertoire windows "'mes documents" )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import os
    X = os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) )
    os.system("explorer " +  "[%"X"%]")
    layer = qgis.utils.iface.activeLayer()
    qgis.utils.iface.setActiveLayer(layer)
    Je remercie d'avance les spécialistes de python qui pourront m'aider.

    fcka

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Tu as écrit "[%"X"%]" qui signifient (pour moi) "concaténer "[%" avec X et avec "%]".
    Or la concaténation des strings Python se font via un "+" => "[%" + X + "%]".

    De plus, les "%" dans une string sont dangereux car ils peuvent signifier "ici il y aura une expression". Tu devrais utiliser mieux le formalisme "string" pour tes paramètres. Tente ceci os.system("explorer [%{0}%]".format(X))...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut
    bonsoir,
    je viens d'essayer
    je pointe toujours vers c:/mes documents.
    merci quand même,
    si quelqu'un d'autre a une idée.

    fcka

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fcka0001 Voir le message
    je pointe toujours vers c:/mes documents.
    si quelqu'un d'autre a une idée.
    Oui enfin c'est plus un problème de syntaxe Windows que Python. Si je veux ouvrir un explorateur sur "c:\boot" (par exemple), je tape alors dans une fenêtre MsDos explorer c:\boot. Je ne tape pas explorer [%c:\boot%] !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut
    bonsoir,
    d'accord pour ce qui est de windows, mais moi je suis dans qgis, j'ai un shape qui représente les communes d'un département et j'ai besoin en cliquant sur une commune de me rendre dans le répertoire qui la concerne, lequel contient divers dossiers et je veux que ça marche pour toutes les communes.

    pour illustrer mon propos, j'ai un script (que j'ai trouvé) qui permet de faire quelque chose sur le même principe. Il permet d'ouvrir avec un clic, une dalle d'un raster (afin d'éviter de charger tout le raster). La grosse différence est que les chemins pointent des fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import os
    repertoire = os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) )
    fic = "[% "repertoire" %]" + "[% "dalle" %]"
    layer = qgis.utils.iface.activeLayer()
    qgis.utils.iface.addRasterLayer(fic,"[% "dalle" %]")
    qgis.utils.iface.setActiveLayer(layer)
    je voudrai adapter ce principe à mon problème actuel.
    fcka

  6. #6
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut
    bonsoir,
    donc, j'ai un shape qui représente les communes d'un département.
    L'une des variables (notée X ) du fichier contient les chemins d'accès aux répertoires liés à chaque commune.
    je voudrais cliquer sur une commune et accéder à "son" répertoire.

    ça a l'air simple.

    voici mon code actuel, il ne marche pas. Quand je clique sur une commune, il m'ouvre le répertoire où se situe le shape ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import os
    X = os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) )
    cmd = "explorer " + '"{}"'.format(X)
    os.system(cmd)
    layer = qgis.utils.iface.activeLayer()
    qgis.utils.iface.setActiveLayer(layer)
    si quelqu'un peut m'aider, je suis preneur

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par fcka0001 Voir le message
    si quelqu'un peut m'aider, je suis preneur
    Si "explorer \foo\bar" ouvre "Mes Documents", c'est probablement parce que \foo\bar n'existe pas.
    A vous d'utiliser l'instruction magique "print" pour afficher le contenu de la variable "cmd" avant qu'elle soit passée à os.system et vérifier que le répertoire existe.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre du Club
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Points : 57
    Points
    57
    Par défaut
    bonsoir,

    j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import os
    layer = qgis.utils.iface.activeLayer()
    import subprocess
    subprocess.Popen(r'explorer /select r,"[% X %] "')
    X étant l'attribut du shape qui contient les chemins d'accès aux répertoires.

    fcka

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créez des formulaires sans table avec le Data Shaping ADO
    Par Lou Pitchoun dans le forum Contribuez
    Réponses: 5
    Dernier message: 26/01/2009, 21h29
  2. Ouvrir des fichier avec VB sous excel
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 13/09/2008, 22h38
  3. Impossibilité d'ouvrir des fichiers avec Access
    Par kmarcel dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2008, 16h07
  4. Ouvrir des fichiers avec leur logiciel par défaut
    Par SyLvErStOrM dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2008, 16h56
  5. ouvrir des fichiers dans un repertoire
    Par Art19 dans le forum Delphi
    Réponses: 5
    Dernier message: 10/04/2007, 14h49

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