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 :

commande shell avec Popen : problème d'accent


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Par défaut commande shell avec Popen : problème d'accent
    salut

    je voudrais réaliser une simple copie de fichier en lançant ma commande shell dans un subprocess.Popen.
    Le problème, c'est qu'un de mes utilisateurs s'appelle Noëlle, qu'il a un répertoire à son nom et que Popen plante quand je veux faire la copie.

    j'obtiens alors l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Traceback (most recent call last):
      File "C:\Documents and Settings\cyrull\Bureau\PDF\pdf2xls.pyw", line 641, in MonAppli
        reppdf2txt = self.pdf2txt()
      File "C:\Documents and Settings\cyrull\Bureau\PDF\pdf2xls.pyw", line 140, in pdf2txt
        p = subprocess.Popen(commande, shell = True)
      File "C:\Python25\lib\subprocess.py", line 594, in __init__
        errread, errwrite)
      File "C:\Python25\lib\subprocess.py", line 816, in _execute_child
        startupinfo)
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xeb' in position 87: ordinal not in range(128)
    qui est liée au ë. Si je remplace Noëlle par Noelle, plus de problème.
    Or, sur la même machine, si je vais directement dans l'invite de commande DOS, je n'ai aucun problème pour exécuter ma commande. En d'autres termes, c'est Popen et non DOS qui pose problème !

    voilà le code concerné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                commande = 'copy "' + self.FichierCopie + '"'
                p = subprocess.Popen(commande, shell = True)
                p.wait()
    Est-ce que quelqu'un voit d'où le problème peut venir sachant que j'ai aussi essayé unicode(commande) dans le Popen

    Merci d'avance pour votre aide

    Cyrull

  2. #2
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Ahhh les joies de l'encodage des caractères !!!

    Il faut que tu encodes le nom de tes fichiers en fonction de l'encodage utilisé par ton système.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import subprocess
    import sys
     
    import locale
    encoding = locale.getpreferredencoding()
     
    if sys.platform == 'win32':
        console_encoding = 'cp850'
    elif sys.platform in ('linux2', 'darwin'):
        console_encoding = 'utf-8'
     
    commande = u'copy e:\\temp\\noëlle.txt e:\\temp\\eric.txt'.encode(encoding)
     
    print commande
    p = subprocess.Popen(commande, shell=True, stdout=subprocess.PIPE)
    p.wait()
     
    for l in p.stdout.readlines():
        print l.decode(console_encoding).encode(sys.stdout.encoding)

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

Discussions similaires

  1. VBA & commande Shell avec paramètres
    Par lgab3 dans le forum VBA Access
    Réponses: 6
    Dernier message: 26/11/2009, 13h14
  2. Exécution de commandes SHELL avec SharpSSH
    Par belaidw dans le forum Services Web
    Réponses: 0
    Dernier message: 29/09/2009, 05h00
  3. commande shell avec gestion des erreurs
    Par nymus7 dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 06/08/2008, 13h59
  4. [vb6] commande shell avec un .msi
    Par sun19 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 16/03/2008, 05h06

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