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 :

Nom de fichier dynamique


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 67
    Par défaut Nom de fichier dynamique
    bonjour,

    j'ai pu récupérer mes données, voir modifier des nœuds de mon fichier xml.
    maintenant je suis en phase de création du fichier final en faisant cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ET.dump(root)
    ET.ElementTree(root).write('C:/Users/PC/Desktop/doc.xml')
    mon fichier doc est bien créer sur le bureau, mais pour un autre soucis je dois le renommer.
    serait il possible d’insérer une variable a la place de doc? dans ce style (name étant la variable.)
    car Evidemment cela ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ET.ElementTree(root).write('C:/Users/PC/Desktop/'+ name +'.xml')
    merci

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frederic2710 Voir le message
    bonjour,
    Salut

    Citation Envoyé par frederic2710 Voir le message
    mon fichier doc est bien créer sur le bureau, mais pour un autre soucis je dois le renommer.
    serait il possible d’insérer une variable a la place de doc? dans ce style (name étant la variable.)
    Bien entendu. La méthode write() attend visiblement une string (ton premier exemple), et l'opérateur "+" appliqué à deux strings les concatène en une seule. Donc tout et bon. Toutefois tu peux aussi utiliser le formatage ce qui t'offre plus de souplesse => ET.ElementTree(root).write('C:/Users/%s/Desktop/%s.xml' % ("PC", name)).

    Citation Envoyé par frederic2710 Voir le message
    car Evidemment cela ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ET.ElementTree(root).write('C:/Users/PC/Desktop/'+ name +'.xml')
    Il serait bien de donner le message d'erreur (en admettant que tu l'aies lu). Parce que dire "cela ne fonctionne pas" ne va pas vraiment aider. La seule hypothèse que je peux formuler, c'est que "name" n'est pas une string (ou une string ne contenant pas la bonne valeur)

    Et comme je le disais, lire les messages d'erreur est un gros plus (ils s'affichent dans l'ordre des appels donc le dernier message contient la dernière instruction ayant provoquée l'erreur et etc en remontant). On ne te reprochera jamais de poser une question quelle que soit son niveau mais on te reprochera toujours de ne pas avoir cherché un minimum.
    Et si tu n'as pas eu de message d'erreur (name bien string mais alors ne contenant pas la bonne valeur), alors un petit print(name) juste avant le write() peut-être aussi un atout...
    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 confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 67
    Par défaut
    voici le message d'erreur:
    TypeError: must be str, not xml.etree.ElementTree.Element
    avec
    ET.ElementTree(root).write('C:/Users/PC/Desktop/'+ name +'.xml')
    si non avec le print (name) j'ai bien ma valeur qui s'affiche.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frederic2710 Voir le message
    voici le message d'erreur: TypeError: must be str, not xml.etree.ElementTree.Element
    C'est pourtant clair. Traduction "doit (sous-entendu [le truc qu'on additionne, donc "name"]) être (du type) str(ing), non (du type) xml.etree.ElementTree.Element". Conclusion, "name" n'est pas une vraie string même si elle y ressemble.

    Citation Envoyé par frederic2710 Voir le message
    si non avec le print (name) j'ai bien ma valeur qui s'affiche.
    Ca ne signifie rien (ex print(5) affichera "5" alors que ce n'est pas une string). C'est le polymorphisme qui produit ce résultat. Le type "xml.etree.ElementTree.Element" possède une méthode "__str__()" qui se charge de formater correctement son contenu "comme si" c'était une string bien que ce n'en soit pas une.
    Donc si tu affiches en plus le type (ex print(name, type(name))) là tu verras réellement ce que c'est (probablement un "xml.etree.ElementTree.Element"). Et si ce type ne possède pas de méthode "__add__()", alors tu ne peux pas l'additionner à une vraie string.
    Tu peux tenter de convertir "name" en str au moment de l'addition => ET.ElementTree(root).write('C:/Users/PC/Desktop/'+ str(name) +'.xml'). Sinon la méthode du formatage devrait fonctionner directement car à ce moment là, Python utilise la conversion implicite en str.
    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 confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 67
    Par défaut
    bonjour,

    effectivement ,hier je me suis rendu compte qu'il fallait faire une conversion en string d'ou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ET.ElementTree(root).write('C:/Users/PC/Desktop/'+ str(name) +'.xml')
    merci

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par frederic2710 Voir le message
    serait il possible d’insérer une variable a la place de doc? dans ce style (name étant la variable.)
    car Evidemment cela ne fonctionne pas.
    Je lance l'interpréteur Python et j'essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> x = '***'
    >>> 'XXX' + x + 'XXX'
    'XXX***XXX'
    donc çà fonctionne.

    Citation Envoyé par frederic2710 Voir le message
    question peut être bête
    ce qui est bête c'est qu'il n'y a pas de question juste un monsieur paumé à vouloir coder en ayant négligé de passer du temps à la case "apprendre".

    Avec un vrai job genre électricien, menuisier, bucheron,... c'est une négligence qui se termine à l'hosto. sinon pire. Heureusement, que l'apprenti est surveillé par un pro. qui le baffe s'il fait n'importe quoi... ce qui limite les dégâts.
    L'informatique, c'est moins dangereux mais si vous n'avez pas pris le temps d'apprendre, vous allez aussi vous faire baffer "virtuellement" dans des forums ou plus concrètement lors d'un entretien d'embauche.

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

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

Discussions similaires

  1. Création d'un nom de fichier dynamiquement
    Par Skycer666 dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 05/01/2012, 11h00
  2. [log4net] nom du fichier dynamique
    Par bossun dans le forum C#
    Réponses: 0
    Dernier message: 01/06/2010, 15h42
  3. Fichier batch et nom de fichier dynamique avec date
    Par ZIED dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 20/04/2009, 15h38
  4. Réponses: 2
    Dernier message: 26/09/2007, 07h49
  5. nom de fichier dynamique
    Par F.Victoire dans le forum Delphi
    Réponses: 5
    Dernier message: 23/06/2006, 14h31

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