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 :

Problème ouverture fichier [Python 2.X]


Sujet :

Python

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut Problème ouverture fichier
    Bonjour à tous,

    Alors j'ai un soucis que je ne comprend pas.

    J'ouvre 3 fichiers en début de mon script en écriture.

    Ensuite j'écris dedans et je les ferme.

    Juste après les avoir fermés je ré-ouvre les fichiers mais cette fois ci en utilisant le mode "append" car je souhaite ajouter à ce fichier des éléments d'un autre fichier.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    SIGMA_1_PRINCIPAL = "SIGMA_1_PRINCIPAL.txt"
    SIGMA_2_PRINCIPAL = "SIGMA_2_PRINCIPAL.txt"
    VON_MISES         = "VON_MISES.txt"
     
    SIGMA_1_PRINCIPAL_FILE = open(SIGMA_1_PRINCIPAL, "w")
    SIGMA_2_PRINCIPAL_FILE = open(SIGMA_2_PRINCIPAL, "w")
    VON_MISES_FILE         = open(VON_MISES, "w")
     
    ..................
    ..................
    ..................
    ..................
     
    SIGMA_1_PRINCIPAL_FILE.write("\t".join(FIRST_LINE)+'\n')
    SIGMA_2_PRINCIPAL_FILE.write("\t".join(FIRST_LINE)+'\n')
    VON_MISES_FILE.write("\t".join(FIRST_LINE)+'\n')
     
    SIGMA_1_PRINCIPAL_FILE.close()
    SIGMA_2_PRINCIPAL_FILE.close()
    VON_MISES_FILE.close()
     
    SIGMA_1_PRINCIPAL_FILE = open(SIGMA_1_PRINCIPAL, "a")
    SIGMA_2_PRINCIPAL_FILE = open(SIGMA_2_PRINCIPAL, "a")
    VON_MISES_FILE         = open(VON_MISES, "a")
     
    tmp_SIGMA_1_PRINCIPAL_FILE = open(tmp_SIGMA_1_PRINCIPAL,"r")
    tmp_SIGMA_2_PRINCIPAL_FILE = open(tmp_SIGMA_2_PRINCIPAL,"r")
    tmp_VON_MISES_FILE         = open(tmp_VON_MISES,"r")
     
    shutil.copyfileobj(tmp_SIGMA_1_PRINCIPAL_FILE, SIGMA_1_PRINCIPAL_FILE)
    shutil.copyfileobj(tmp_SIGMA_2_PRINCIPAL_FILE, SIGMA_2_PRINCIPAL_FILE)
    shutil.copyfileobj(tmp_VON_MISES_FILE, VON_MISES_FILE)
    ..................
    ..................
    ..................
    ..................
     
    SIGMA_1_PRINCIPAL_FILE.close()
    SIGMA_2_PRINCIPAL_FILE.close()
    VON_MISES_FILE.close()
    Lorsque je procède de la sorte j'obtient le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "C:\Users\users\Desktop\enveloppe\13052016\sigma_principal.py", line 135, in <module>
        SIGMA_1_PRINCIPAL_FILE = open(SIGMA_1_PRINCIPAL, "a")
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xf0 in position 4: ordinal not in range(128)
    Ce que je ne comprend pas c'est que lorsque je fais la même chose mais plutôt que de rentrer mes noms de fichier via des variables intermédiaires je les rentre en dur lors de l'ouverture du fichier je n'ai pas de problèmes .
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    SIGMA_1_PRINCIPAL = "SIGMA_1_PRINCIPAL.txt"
    SIGMA_2_PRINCIPAL = "SIGMA_2_PRINCIPAL.txt"
    VON_MISES         = "VON_MISES.txt"
     
    SIGMA_1_PRINCIPAL_FILE = open(SIGMA_1_PRINCIPAL, "w")
    SIGMA_2_PRINCIPAL_FILE = open(SIGMA_2_PRINCIPAL, "w")
    VON_MISES_FILE         = open(VON_MISES, "w")
     
    ..................
    ..................
    ..................
    ..................
     
    SIGMA_1_PRINCIPAL_FILE.write("\t".join(FIRST_LINE)+'\n')
    SIGMA_2_PRINCIPAL_FILE.write("\t".join(FIRST_LINE)+'\n')
    VON_MISES_FILE.write("\t".join(FIRST_LINE)+'\n')
     
    SIGMA_1_PRINCIPAL_FILE.close()
    SIGMA_2_PRINCIPAL_FILE.close()
    VON_MISES_FILE.close()
     
    SIGMA_1_PRINCIPAL_FILE = open("SIGMA_1_PRINCIPAL.txt", "a")
    SIGMA_2_PRINCIPAL_FILE = open("SIGMA_2_PRINCIPAL.txt", "a")
    VON_MISES_FILE         = open("VON_MISES.txt", "a")
     
    tmp_SIGMA_1_PRINCIPAL_FILE = open(tmp_SIGMA_1_PRINCIPAL,"r")
    tmp_SIGMA_2_PRINCIPAL_FILE = open(tmp_SIGMA_2_PRINCIPAL,"r")
    tmp_VON_MISES_FILE         = open(tmp_VON_MISES,"r")
     
    shutil.copyfileobj(tmp_SIGMA_1_PRINCIPAL_FILE, SIGMA_1_PRINCIPAL_FILE)
    shutil.copyfileobj(tmp_SIGMA_2_PRINCIPAL_FILE, SIGMA_2_PRINCIPAL_FILE)
    shutil.copyfileobj(tmp_VON_MISES_FILE, VON_MISES_FILE)
    ..................
    ..................
    ..................
    ..................
     
    SIGMA_1_PRINCIPAL_FILE.close()
    SIGMA_2_PRINCIPAL_FILE.close()
    VON_MISES_FILE.close()
    Honnêtement je ne comprend pas. Cela à l'air dêtre un problème d'Unicode mais pourquoi dans un cas ça fonctionne et dans l'autre cas ça ne fonctionne pas ?

    PS : Si je met les noms de fichier dans des variables c'est parce qu'ils sont défini en début de fichier afin que l'utilisateur n'ait qu'à les changer à un seul endroit dans le script s'il le souhaite.

    Merci d'avance pour ceux qui se pencheront sur mon problème.

  2. #2
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Tu veux dire que ce sont les noms de fichiers qui provoquent l'erreur ?

    Les constantes définissant les noms de tes fichiers sont définis dans un autre fichier ou module ?
    Avec le même encodage (enregistrement) et encoding en début du fichier .py ?

    Pour déboguer, ord() sur les caractères des 2 chaînes devraient montrer les différences.
    Le temps ronge l'amour comme l'acide.

  3. #3
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par bistouille Voir le message
    Tu veux dire que ce sont les noms de fichiers qui provoquent l'erreur ?
    En fait ça à l'air de venir des noms de fichiers oui, vue le test que j'ai fais.

    Citation Envoyé par bistouille Voir le message
    Les constantes définissant les noms de tes fichiers sont définis dans un autre fichier ou module ?
    Non elles sont définis dans mon fichier principal, j'ai pas d'autre fichier ou de modules

    Citation Envoyé par bistouille Voir le message
    Avec le même encodage (enregistrement) et encoding en début du fichier .py ?
    Aucun encodage de définit en début de fichier.

    Citation Envoyé par bistouille Voir le message
    Pour déboguer, ord() sur les caractères des 2 chaînes devraient montrer les différences.
    Ok je vais tester.

    Merci

  4. #4
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    J'ai trouvé mon problème.

    J'avais une variable qui avait le même nom que ma variable contenant le nom du fichier, du coup lorsque je voulais ré-ouvrir le fichier la variable ne contenait plus le nom du fichier mais une matrice.

    En tout cas merci le ord() m'a aidé à trouver le problème.

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

Discussions similaires

  1. [EXCEL - VBA] Problème ouverture fichier suite Macro Userform
    Par Guidhy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/04/2007, 09h18
  2. [Upload] Problème ouverture fichier joint
    Par vincedjs dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2006, 11h24
  3. forcer le téléchargement - problème ouverture fichier
    Par grinder59 dans le forum Langage
    Réponses: 8
    Dernier message: 09/03/2006, 15h59
  4. problème ouverture fichier texte
    Par ice-t69 dans le forum Langage
    Réponses: 4
    Dernier message: 07/11/2005, 19h29
  5. Problème ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2005, 09h13

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