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 :

récuperation d'un nom de fichier par un module


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut récuperation d'un nom de fichier par un module
    Bonjour,

    J'ai un petit souci, j'ai un script python et j'initialise les nom des différent fichiers par éxemple dans le script je fait appel à un module que j'ai crée il contien plussieurs fonction, je veut savoir comment je peut récupiré le nom du Projet par éxemple dans le module pour l'utilisé a crée un chemin par exemple voici l'erreur que j'obtien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: cannot concatenate 'str' and 'function' objects
    je comprend bien l'érruer mais je ne sais pas comment convertir l'ojet en str
    Merci

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> def tutu():
    ...     pass
    ...
    >>> tutu.__name__
    'tutu'
    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> def tutu():
    ...     pass
    ...
    >>> tutu.__name__
    'tutu'
    @+
    Mouai =/
    Faut éviter au maximum d'utiliser les méthodes commençant par __
    Si c'est un objet, il contient une méthode __str__ pouvant être appelée via la fonction str(monObjet)

  4. #4
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bon... Si tu souhaite ne pas utiliser les attributs spéciaux tu as aussi tutu.func_name
    Edit:
    Ceci dit je ne vois pas trop le problème avec __name__ : C'est un attribut spécial pas une méthode spéciale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if __name__ == '__main__':


    De plus str(tutu) n'est pas très exploitable en direct.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Et func_name est aussi un attribut...
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut légende urbaine?
    Salut,

    Citation Envoyé par brachior Voir le message
    Mouai =/
    Faut éviter au maximum d'utiliser les méthodes commençant par __
    Si c'est un objet, il contient une méthode __str__ pouvant être appelée via la fonction str(monObjet)
    Les noms de la forme __xxx__ sont seulement réservés à Python.
    Ce qui signifie que le programmeur lambda(*) peut utiliser ceux qui sont documentés "as documented" et éviter de créer attributs ou noms de fonctions avec de tels noms.

    Les règles d'usage sont documentées dans le PEP008 qui dit:
    - __double_leading_and_trailing_underscore__: "magic" objects or
    attributes that live in user-controlled namespaces. E.g. __init__,
    __import__ or __file__. Never invent such names; only use them
    as documented.
    - W
    (*) celui qui n'est pas 'lambda' fait ce qu'il veut... mais comme il a lu PEP008, il ne fait pas n'importe quoi, n'importe quand, n'importe comment.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Juste un passage pour rattraper mon erreur

    En Python 3 fn.func_name n'existe plus et est remplacer par fn.__name__
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Python 3.1.3 (r313:86834, Mar 25 2011, 19:42:27) 
    [GCC 4.5.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> def tutu():
    ...     pass
    ... 
    >>> tutu.func_name
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'function' object has no attribute 'func_name'
    >>> tutu.__name__
    'tutu'
    fn.__name__ existe en Python 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Python 2.6.6 (r266:84292, Mar 25 2011, 19:24:58) 
    [GCC 4.5.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> def tutu():
    ...     pass
    ... 
    >>> tutu.__name__
    'tutu'
    Donc dans tous les cas il est préférable d'utiliser __name__.
    Merci d'utiliser le forum pour les questions techniques.

  8. #8
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Hum ...
    Pour avoir le nom de la fonction à la rigueur (il faut de l'introspection)

    En fait, je ne comprend pas le post initial qui passe d'une chaine de caractères à une fonction puis un objet.

    Python est certes typé dynamiquement, mais c'est pas une raison pour avoir une variable qui change tout le temps Oo

    Citation Envoyé par autousto Voir le message
    [...] J'ai un script python et j'initialise les noms des différents fichiers par exemple
    Donc ici on parle d'une string

    Citation Envoyé par autousto Voir le message
    Dans le script je fais appel à un module que j'ai créé il contient plusieurs fonctions, je veux savoir comment je peux récupérer le nom du Projet [...]
    Ici on parle d'un module dont on veut connaitre le nom ?
    Et par Projet, on parle de la variable ou du fichier ?

    Citation Envoyé par autousto Voir le message
    Voici l'erreur que j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: cannot concatenate 'str' and 'function' objects
    Je comprend bien l'erreur mais je ne sais pas comment convertir l'objet en str
    Moi je ne comprend pas l'erreur ...
    On est supposé avoir une string Projet et le message parle d'une fonction ...
    Ou alors tu veux un script qui via un module trouve son nom et le stock dans une variable nommée Projet ?

    Enfin bon, moi j'ai pas bien compris la question ^^
    Ma précédente réponse n'était là que pour préciser que les méthodes dites "magic" doivent être utilisées à bon escient ^^

  9. #9
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    enfaite sa passe en objet car jutilise une ihm avec Qt4 donc je récupère le nom d'une case( comboBox) ou l'utilisateur sélectionne le nom du projet.
    après je fait appel a un autre script qui passe en module ou j'ai besoint des diffirent nom que lutilisateur a choisi, donc sur le script principale c bien a str mais dans le module j'obtien un obj et j'ai essayer la function mias sa n'a pas marché

  10. #10
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Je me suis jamais servi de QT mais, si les librairies d'interface graphique sont cohérentes,
    Alors quand tu lui donnes un élément à afficher, c'est qu'elle attend le retour de la méthode __str__.
    Et comme elle est sensée afficher n'importe quel objet, elle les stocke en temps qu'object ...
    Donc toi derrière tu récupères un objet qui est du type de ton objet initial.
    Tu dois même avoir des méthodes qui te renseignent sur le texte sélectionné (un truc comme myComboBox.selectedItem.text ...)

  11. #11
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    autousto, PauseKawa t’as donné la solution. Au lieu de faire*:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    a = 'AAA' + Projet

    … tu dois faire*:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    a = 'AAA' + Projet.__name__

  12. #12
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    Peut être j'ai pas bien expliquer mon prob, je veux pas récupirer le nom de la function mais un nom que j'ai déclarer dans mon script,
    alors j'ai un script avec qt4 je récupère le nom de peojet sélectionée dans un camboBox, quand j'utilise str sa marche bien, alors dans une function d'un boutton démarrer je fait appel a un module qui contient toute les function que jutilise alors dans le module j'ai difinit la function suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def Projet(projet):
         Projet = projet
         Projet=str(Projet)
         print Projet
         return Projet
    la sa marche bien car dans mon script principale je fait appel a la function du module par alors que l'argument et le nom récupirer dans le comboBox, sur cette function c bien mais après j'ai une autre function quand je fait l'appel de cette function elle me retourne pas le nom de projet car sur cette function je ne peut pas mettre un argument, je pense que je doit difinir dans le module une classe et de la première function marchera bien ?

  13. #13
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    C'est juste une histoire de type/nom/portée des variables ? On est bien loin d'avoir compris la question alors.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def Projet(projet):
         Projet = projet
         Projet=str(Projet)
         print Projet
         return Projet
    Plus de code ? Car là voyiez vous... C'est un beau mélange.
    Pensez à la lisibilité et nommez convenablement vos objets.

    Vous parlez de fichiers ? C'est a dire que vous voulez associer 'AAA' et un nom de fichier ?
    Regardez du coté du module os(/os.path)

    Dans l'attente d'avoir plus de code.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  14. #14
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    c bon j'ai trouver une sollution, enfin j'ai déclarer les variables en global

  15. #15
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    Je vous remercie, enfin je ne savais pas quoi mettre comme code car c un peut lang, mais bon c résolu et pour le P et le p c'était pourdifféré l'argument et le om de fonction
    merci encore

  16. #16
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Attention de ne pas se mélanger les mots module, classe, instance et méthode, fonction et attribut, tout cela n'a pas l'air très clair dans ta tête.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  17. #17
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    Oui ta raison, enfin sa fait pas lang temps que je travail sur python, et même je travail sur Matla, Python, Perl au même temps donc je mélange un peut les choses mais je pense le principe reste le même.
    Je vous remercie

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/11/2008, 15h56
  2. "Nom du fichier" par défaut pour OpenFileDialog
    Par Axiome dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/11/2008, 14h10
  3. un nom de Fichier par défaut dans TsaveDialog
    Par toutou2000 dans le forum Débuter
    Réponses: 4
    Dernier message: 10/11/2008, 16h36
  4. [JFileChooser] Nom de fichier par défaut
    Par alex'l dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 29/08/2005, 13h57

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