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ésolu]Convertir un chemin en chaine.


Sujet :

Python

  1. #1
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut [Résolu]Convertir un chemin en chaine.
    Tous d'abord bonjour.

    J'ai cherché avec des mots clées, mais je dois m'y prendre comme un gland.

    Alors voila, je développe un outils de conversion de données de fichiers vers un autre logiciel en passant par python.

    A la base, il s'agit de lire un fichier au format .txt, le dit fichier est accompagné d'images.

    Et la j'ai un problème.

    Je dois ordonner au logiciel de charger les images.

    Pour se faire, j'ai commencer par extraire le chemin du fichier .txt a l'aide des fonctions
    dialogue.path()
    et
    os.path.dirname()
    Ensuite, je lit le nom du fichier image à charger et je le fusionne avec les données précédentes grâce à la commande
    os.path.join
    Jusque la, tout va bien.
    Par exemple, pour un fichier .txt, accompagné de son image (bidule.jpg), se trouvant tous sous le répertoire c:\bidulke\truc\

    J'obtient bien le chemin c:\bidulke\truc\bidule.jpg

    Le problème, c'est que le format ne correspond pas

    Pour que le logiciel lise l'image, il faut passer par une commande SetString et que le chemin soit au format "c:\bidulke\truc\bidule.jpg".

    J'ai passé 3 jours à essayer diverses commandes, en vain.


    La question est donc, comment transformer le chemin reconstruit en "chemin reconstruit"?



    une autre question,C'est l'utilisateur qui sélèctionne le fichier par le biais d'une commande qui fait apparaitre une fenètre windows, mon fichier .txt possèdent une extension spécifique, comment dire à python, lorsque j'ouvre une fenêtre de désignation de ne voire que les fichier de se format.


    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Un chemin de fichier n'est pas un objet particulier en Python, c'est une chaîne de texte.

    Les fonctions os.path.dirname() et os.path.join() retournent une chaîne de texte.

    Donc où est ton problème ?

  3. #3
    Membre Expert 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
    Par défaut
    "/" VinsS.
    Un simple str.replace("/", "\") devrais faire l'affaire.

    @+

  4. #4
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Un chemin de fichier n'est pas un objet particulier en Python, c'est une chaîne de texte.

    Les fonctions os.path.dirname() et os.path.join() retournent une chaîne de texte.

    Donc où est ton problème ?
    Ben, apparemment, pour lui, si.

    Citation Envoyé par PauseKawa Voir le message
    "/" VinsS.
    Un simple str.replace("/", "\") devrais faire l'affaire.

    @+
    SyntaxError: EOL while scanning string literal


    Je hais ma vie!

    Bug regle en écrivant "\\" en place de "\", mais il refuse, à nouveau de charger l'image.

    Cela me démonte, si je lui dit

    evpath = ("C:\trucmuche\trucmuch.jpg")

    ev.SetString(evpath)
    La , il charge.

    Si j'écris
    evpath = os.path.join(filepath, evname)
    ev.SetString(evpath)
    Alors la, il ne trouve pas l'image, je vais finir par penser que ce logiciel me déteste.
    Le pire étant que, dans le système de gestion des images, le chemin est correctement indiqué, mais il ne fait pas le travail.

    Ou alors, c'est un problème de variable d'environnement, il cherche le chemin ailleur?

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Je ne comprenais pas la question comme cela.

    il faut passer par une commande SetString et que le chemin soit au format "c:\bidulke\truc\bidule.jpg".
    ma réponse est que c:\bidulke\truc\bidule.jpg est une chaîne de texte de toutes façons. La question des séparateurs de windows est censée être prise en charge par os.path.join() que shanoc dit avoir utilisé.

    Je pense qu'il faudrait nous dire de quel programme parle shanoc, d'où sort ce SetString ?

  6. #6
    Membre Expert 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
    Par défaut
    Ou alors, c'est un problème de variable d'environnement, il cherche le chemin ailleur?
    Il ne comprend pas \ comme un caractère d’échappement par hasard ? Dans ce cas cela serait bien \\

    Edit : Me culpa VinsS. C'est moi qui n'est pas compris la question.

  7. #7
    Membre Expert 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
    Par défaut
    \b est une ancre et \t une tabulation...
    Le programme en question comprend les caractères d'échappement ?

  8. #8
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Je ne comprenais pas la question comme cela.



    ma réponse est que c:\bidulke\truc\bidule.jpg est une chaîne de texte de toutes façons. La question des séparateurs de windows est censée être prise en charge par os.path.join() que shanoc dit avoir utilisé.

    Je pense qu'il faudrait nous dire de quel programme parle shanoc, d'où sort ce SetString ?
    Le programme est poser pro 2012.

    Explanation
    Set the string value. In this version of Poser, this is the path of a texture or movie file.
    Arguments
    Enter the path name for the desired texture or movie file.
    Syntax
    <NoneType> SetString(<StringValue> file)
    Possible que se soit un bug du dit programme.

    Et, ce qui me rend fou, c'est que dans la gestionnaire d'image de poser, ben le chemin est rigoureusement exact.

  9. #9
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Poser prend des scripts Python comme Blender ou Maya ? C'est une bonne chose.

    Tu veux tester ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # ta construction
    evpath = os.path.join(filepath, evname) 
    # test
    print(os.path.isfile(evpat))
    Si la réponse est True, alors le problème est ailleurs que dans la construction du chemin.

  10. #10
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Poser prend des scripts Python comme Blender ou Maya ? C'est une bonne chose.

    Tu veux tester ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # ta construction
    evpath = os.path.join(filepath, evname) 
    # test
    print(os.path.isfile(evpat))
    Si la réponse est True, alors le problème est ailleurs que dans la construction du chemin.
    Oui, il le supporte complètement python 2.7.1

    print(os.path.isfile(evpath))
    Reponse: False

    Et merde.

    Edite:
    C'est bien ça, le fichier .txt est bien considéré comme un fichier, mais le fichier image n'est pas reconnue.

    J'ai due commettre une boulette.



    Re-edite: bon , j'ai demande au script de me fournir le chemin reconstruit, j'ai fait un copier-coller dans la bar windows, et le fichier image s'ouvre!

    Je comprend plus rien.

  11. #11
    Membre Expert 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
    Par défaut
    Citation Envoyé par shanoc Voir le message
    print(os.path.isfile(evpath))
    Reponse: False
    Et un print(evpath) donne quoi ?

  12. #12
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Et un print(evpath) donne quoi ?
    Le chemin est bon, mais après vérification, je me rend compte d'un point important, les images sont en .HDR ou EXR et non .jpeg

    Et je crois que le problème vient de la, je ne sais pas si python peut les "voire" nativement?

  13. #13
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Si le chemin est bon, os.path.isfile() retournera True quelque soit le type de fichier, si il retourne False, le chemin est inexact.

  14. #14
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Si le chemin est bon, os.path.isfile() retournera True quelque soit le type de fichier, si il retourne False, le chemin est inexact.
    Bon j'ai fais un essai simple:

    J'ai pose un fichier de test sous C:
    Le fichier image a charge est sous
    C:\SimulateSky_Ref\SimulateSky_Ref_Env.hdr
    J'ai ensuite demandé au script de me fournir le chemin genéré (command print)

    Réponse:
    La commande dit que ceci n'est pas un fichier
    Voila le chemin generé par le script:
    C:\SimulateSky_Ref\SimulateSky_Ref_Env.hdr
    Si je fait un copier/colle dans la barre windows de l'adresse fournit par le script, windows m'ouvre le bon fichier.

    C'est terrible, mais je ne vois pas ou se trouve l'erreur.

    Je suis sur qu'il s'agit d'un truc con, un p'tit bidule dans un coin qui fait chier.

  15. #15
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Essaie de vérifier que tu n'as pas un caractère qui dérange (espace, retour charriot....)
    pour cela tu peux essayer de faire print ">path<" ça permet de voir si la chaine de caractère ne contient pas d'éléments superflus "invisibles"

  16. #16
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    Essaie de vérifier que tu n'as pas un caractère qui dérange (espace, retour charriot....)
    pour cela tu peux essayer de faire print ">path<" ça permet de voir si la chaine de caractère ne contient pas d'éléments superflus "invisibles"
    Euh, je t'avoue ne pas comprendre se que tu me demande.

    print >evpath< ?
    Print (>evpath<) ?
    Print >(evpath)< ?

  17. #17
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    en fait je voulais juste que tu encadres le résultat de ton print de ton chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print ">>"
    print (evpath)
    print "<<"
    ça te permet de voir si tu n'as pas un caractère "non visible" en début ou fin de chaîne

  18. #18
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    en fait je voulais juste que tu encadres le résultat de ton print de ton chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print ">>"
    print (evpath)
    print "<<"
    ça te permet de voir si tu n'as pas un caractère "non visible" en début ou fin de chaîne

    Okay, désolez, j'apprend sur le tas!

    Et le résultat est.....un mega saut de ligne après le nom de fichier!
    >>
    C:/SimulateSky_Ref/SimulateSky_Ref_Env.hdr

    <<
    Bon sang, mais d'ou sort-il?



    Edite: C'était bien ça, il ma suffit d'ajouter un (string.replace blabla, '\n' , '')

    Et la, il ma bien chargé l'image comme il fallait.

    Bon, plus qu'a faire une interface digne de se nom.

    Encore merci a vous pour votre aide, et aussi, votre patience avec un débutant.

  19. #19
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print ">%s<" % evpath.strip()
    Maintenant, si tu nous montres ton code, peut-être qu'on te trouvera d'où proviennent les retours lignes surnuméraires.

  20. #20
    Membre actif
    Homme Profil pro
    indépendant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : indépendant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print ">%s<" % evpath.strip()
    Maintenant, si tu nous montres ton code, peut-être qu'on te trouvera d'où proviennent les retours lignes surnuméraires.
    C'est corrigé,en réalité, ça provient des fichiers mêmes

Discussions similaires

  1. Réponses: 45
    Dernier message: 27/09/2006, 10h44
  2. convertir a partir de chaine de caractere
    Par hammacom dans le forum Java ME
    Réponses: 1
    Dernier message: 24/07/2006, 08h26
  3. Réponses: 4
    Dernier message: 16/05/2006, 21h03
  4. convertir un nombre en chaîne de caractères
    Par Calbane dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/04/2006, 20h12
  5. convertir un nombre en chaine de caractere
    Par c_moi_c_moi dans le forum Oracle
    Réponses: 3
    Dernier message: 23/11/2005, 11h24

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