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 :

probleme encodage ods python [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Par défaut probleme encodage ods python
    Bonjour à tous,
    j'ai un probleme pour l'ouverture et la conversion d'un fichier .ods en .txt sur python
    avec ce code
    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
     
    #Réécriture fichier
    def reecriture_fichier (Fichier_brut, Fichier_traite):
        Fichier = open(Fichier_brut, 'r')           # ouvre le fichier releve pour le lire
        Fichier_reecrit = open(Fichier_traite, 'w') # ouvre un fichier de réécriture des données
        lignes=Fichier.readlines()                  # on parcourt les lignes du fichier source
        for ligne in lignes:
            ligne_reecrit=ligne.replace(',','.')    # on remplace tous les ',' par des '.'
            print (ligne_reecrit)
            Fichier_reecrit.write(ligne_reecrit)    # on écrit ces nouvelles lignes dans le fichier de chemin ecrit
        Fichier.close()
        Fichier_reecrit.close()
        return
     
    initial, final = reecriture_fichier ('puissance.txt','traite.txt')
    l'erreur retournée est la suivante :
    0 0 2.461832 0

    0 0 2.47714 0

    Traceback (most recent call last):
    File "C:\Users\segol\Google Drive\_CPGE\_MP_PSI\TP_PSI\4.5.6. Equations mvt. PFD TEC\_TP6.4 Slider\python\courbe puissance filtrée corrigé.py", line 23, in <module>
    initial, final = reecriture_fichier ('puissance.txt','traite.txt')
    TypeError: cannot unpack non-iterable NoneType object
    J'ai un peu pret tout essayé, en ajoutant encode =utf-8, en copiant les données dans un bloc note en .txt ...

    Rien n'y fait, si qq'un a un début de solution, je suis preneur, merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Par défaut
    Activite1.ods
    je joins le fichier posant problème.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 679
    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 679
    Par défaut
    Salut,

    Citation Envoyé par segolsed Voir le message
    J'ai un peu pret tout essayé en ajoutant encode =utf-8, en copiant les données dans un bloc note en .txt ...
    Essayez de chercher sur Internet avec le message "TypeError: cannot unpack non-iterable NoneType object" pour comprendre ce qu'il signifie avant de faire n'importe quoi avec l'espoir que çà tombe en marche.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 181
    Par défaut
    Hello,
    c'est un peu n'importe quoi ce que tu veux faire : un fichier ods est un fichier tableur Openoffice, LibreOffice et on ne peut pas le lire comme un fichier texte. Il faut utiliser le logiciel adéquat pour le lire comme calc ou une bibliothèque python qui lit les fichiers openoffice . En pièce jointe ton fichier lu avec calc et enregistré en format csv (dans le fichier zip) qui est un format texte.

    Ami calmant, J.P
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 679
    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 679
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    c'est un peu n'importe quoi ce que tu veux faire : un fichier ods est un fichier tableur Openoffice, LibreOffice et on ne peut pas le lire comme un fichier texte.
    Vous remarquerez que dans le message d'erreur il y a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    initial, final = reecriture_fichier ('puissance.txt','traite.txt')
    TypeError: cannot unpack non-iterable NoneType object
    ce n'est pas un fichier ODS (qui étant binaire provoquerait un plantage bien plus tôt en UnicodeDecodeError).

    Après par quelle magie le PO passe d'un ODS a un TXT est une question qu'on peut lui poser mais qui est sans rapport avec le problème (python) rencontré.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Après par quelle magie le PO passe d'un ODS a un TXT est une question qu'on peut lui poser
    Je cois que c'est dans son "en copiant les données dans un bloc note en .txt"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 503
    Par défaut
    Euh le problème ce n'est pas plutôt qu'on essaie de récupérer quelque chose (en l'occurrence 2 variables)de la fonction alors qu'elle ne retourne rien (un simple return, donc juste UN None qu'il ne peut séparer en 2 variables).

    En dehors du fait, que comme ça a été dit, un fichier ods c'est un fichier tableur qui donc pas un fichier texte

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par segolsed Voir le message
    J'ai un peu pret tout essayé, en ajoutant encode =utf-8
    Ben oui mais non, un ods ce n'est pas un fichier texte donc on ne le lit pas comme on lit un fichier texte. On le lit en binaire, puis on exploite les données selon la structure interne spécifique à un fichier ods.
    Ou bien on utilise une librairie qui fait déjà ce job.

    Citation Envoyé par segolsed Voir le message
    en copiant les données dans un bloc note en .txt ...
    Ah là c'est déjà mieux. Sauf qu'il aurait alors été bien de nous montrer le résutat du txt. Quelque chose me dit que ça devrait donner un truc où chaque colonne est séparée de sa suivante par une tabulation. Donc ensuite il faut utiliser ces tabulation pour récupérer les datas.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Avant même de développer un script Python, et si vous avez LibreOffice installé localement, vous pourriez tout simplement l'invoquer en ligne de commande pour faire ce job.
    Cela offre plus de possibilités aussi, par exemple export vers pdf.
    Un petit lien utile: https://www.libreofficehelp.com/batc...f-libreoffice/

    Si vous avez un besoin un peu plus spéciffique ou besoin de faire tourner le script sur une machine où LibreOffice n'est pas forcément installé, alors oui utilisez une lib déjà existante. Si c'est juste du one-shot ou automatiser rapidement le travail, utilisez ce qui existe déjà.

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

Discussions similaires

  1. probleme encodage base postgresql
    Par touane dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/06/2007, 10h36
  2. [Utilisation] Probleme encodage sous windows
    Par tittoto dans le forum Subversion
    Réponses: 2
    Dernier message: 28/05/2007, 09h44
  3. [VS2005] Probleme Encodage CSV pour Excel
    Par belfaigore dans le forum VB.NET
    Réponses: 1
    Dernier message: 24/05/2007, 17h36
  4. Problème d'encodage avec Python
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 22/02/2006, 14h36
  5. probleme apache+module python sous windows
    Par gaussprodada dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 02/11/2004, 21h09

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