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 :

Incompatibilité du "/" avec win Vista ?


Sujet :

Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut Incompatibilité du "/" avec win Vista ?
    Bonjour,

    Quand je fais os.startfile("c:/bonjour/aurevoir") sous Windows XP ou sous Linux, cela fonctionne, par contre, sous Windows Vista, ca plante !

    Sous Vista je dois utiliser "\\" à la place du "/" pour que cela fonctionne.

    Je croyais que le "/" était compatible avec les différents systèmes, non ?

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 808
    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 808
    Points : 7 086
    Points
    7 086
    Par défaut
    Tu peux utiliser os.path.normpath()

    http://docs.python.org/library/os.path.html
    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)

  3. #3
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Pour la gestion des fichiers, je conseillerais de travailler avec quelque chose comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    filePath = "c:/" + os.path.join("bonjour", "aurevoir")
    os.startfile(filePath)
    Ceci est presqu'une solution multi-os. Le problème vient de "c:/" qui n'est pas pris en compte par la module os. C'est ainsi... Par contre, l'utilisation de os.path.join(...) est très efficace.

  4. #4
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Il serait plus juste d'écrire "C:\\" à la place de "C:/".

    Sous Seven, aucun souci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.startfile("C:/Users/Antoine/Desktop/calcul.s")
    Ca m'ouvre mon édieur pour les fichiers asm, bref c'est nickel.

    Et si mes souvenirs sont justes, je n'ai jamais eu de tels problème sous vista. Du moins aucun avec open, donc en toute logique...
    Note: c'est peut-être un bug dans ta version de python... ça arrive. Tu as quelle version ?

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Citation Envoyé par Antoine_935 Voir le message
    Il serait plus juste d'écrire "C:\\" à la place de "C:/".
    Au temps pour moi...

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je confirme que ça marche sous vista.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  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
    Citation Envoyé par rambc Voir le message
    Le problème vient de "c:/" qui n'est pas pris en compte par la module os. C'est ainsi...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import os
     
    def Chercher_Root():
       for root, dirs, files in os.walk(os.getcwd(), topdown=True):
          for items in root:
             return items
             break
     
    print Chercher_Root()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    patrice@Zeus:~/Bureau$ python test40.py 
    /
    A tester sous Windows il me semble.

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

  8. #8
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Ta méthode fonctionne sous Windows. En fait c'est os.path.join(...) qui n'aime pas "c:".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import os
     
    print "c:\\" + os.path.join("bonjour", "aurevoir")
    print os.path.join("c:", "bonjour", "aurevoir")
    Le code ci-dessus renvoie sous Windows XP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c:\bonjour\aurevoir
    c:bonjour\aurevoir
    Ce sont les deux points qui posent problème.

  9. #9
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.path.join("c:", "foo") represents a path relative to the current directory on drive C: (c:foo), not c:\foo.
    Donc c'est plus quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import os
     
    def Chercher_Root():
       for root, dirs, files in os.walk(os.getcwd(), topdown=True):
          for items in root:
             return items
             break
     
    filePath = Chercher_Root() + os.path.join("bonjour", "aurevoir")
    print filePath
    Edit :

    Et sous linux cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    patrice@Zeus:~/Bureau$ python test40.py 
    /bonjour/aurevoir
    Désolé, pas de poste Windows (ou même plus : Vista) pour tester le weekend.
    Merci d'utiliser le forum pour les questions techniques.

  10. #10
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    De toute façon, cela demande toujours un traitement particulier car avec Windows XP il manque les deux petits points.

  11. #11
    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
    Moche d'en arriver à un os.platform pour cela... Et de plus cela donne quoi sous Vista et Windows 7 ? Merci Microsoft.

    Je ne désespère pas rambc.
    Je regarde cela au bureau cette semaine.
    Merci d'utiliser le forum pour les questions techniques.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Ben dites donc, vous avez sacrément papoté en mon absence

    Je n'ai pas d'autres soucis avec les chemins en général sous Vista. C'est juste avec os.startfile...

    Au vu du nombre de posts, je constate que vous n'avez pas réussi à trouver la solution idéale. J'attends donc un peu que vous puissiez faire quelques tests...

    En tout cas, merci pour vos réponses !

    PS : Le version de Python que j'utilise est la 2.5

  13. #13
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 808
    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 808
    Points : 7 086
    Points
    7 086
    Par défaut
    En utilisant os.path.normpath, je trouve bizarre que cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dir=os.path.normpath("c:/bonjour/aurevoir")
    os.startfile(dir)
    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)

  14. #14
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Effectivement cela marche tel quel.

    J'aurais appris quelque chose et je ferais en sorte de ne plus utiliser la méthode os.path.join(...).

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2011, 17h00
  2. Problème avec DataBase Desktop 7 sous Win Vista ?
    Par maker dans le forum C++Builder
    Réponses: 0
    Dernier message: 22/03/2010, 23h11
  3. mes problemes avec win Vista starter
    Par rokirakat dans le forum Windows Vista
    Réponses: 3
    Dernier message: 26/03/2008, 21h12
  4. winXP avec une barre des taches win VISTA
    Par hocine dans le forum Windows XP
    Réponses: 4
    Dernier message: 23/05/2007, 16h11
  5. Problème avec une imprimante dans Win Vista Ultimate
    Par Safaritn dans le forum Périphériques
    Réponses: 6
    Dernier message: 24/04/2007, 21h28

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