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 écriture fichier csv


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 32
    Points
    32
    Par défaut problème écriture fichier csv
    Bonjour,

    J'essaye d'écrire un fichier csv, je suis débutant alors pardonnez moi si la réponse est évidente mais là je bloque.

    L'erreur est :
    Traceback (most recent call last):
    File "C:\python\SC_juridique.py", line 57, in <module>
    c.writerow(["CODEETBS","LIBETBS","FINESS","CODEUF","LIBUF","DATEUF1","DATEUF2","ACTIVITE","INDICATEURT2A","BUDGET","ANALYSE","CA","LIBCA","CODECR","LIBCR","CODEPOLE"])
    TypeError: a bytes-like object is required, not 'str'

    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            if passage == 1:
                c.writerow([codeetbs,libetbs,finess,codeuf,libuf,dateuf1,dateuf2,activite,indicateurT2A,budget,analyse,ca,libca,cr,libcr,codepole])
            else:
                c = csv.writer(open("C:/python/fichier/structcsv.csv", "wb"))
                c.writerow(["CODEETBS","LIBETBS","FINESS","CODEUF","LIBUF","DATEUF1","DATEUF2","ACTIVITE","INDICATEURT2A","BUDGET","ANALYSE","CA","LIBCA","CODECR","LIBCR","CODEPOLE"])
                c.writerow([codeetbs,libetbs,finess,codeuf,libuf,dateuf1,dateuf2,activite,indicateurT2A,budget,analyse,ca,libca,cr,libcr,codepole])
                passage = 1
    J'ai mis une variable passage à 0 si on est pas encore passé on rentre dans le else on crée notre fichier csv et son en-tête sa première ligne et on passe passage à 1 si passage est à 1 on se contente d'ajouter une ligne...

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si j'applique l'exemple de la doc avec les mêmes données, ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import csv
    with open('eggs.csv', 'w', newline='') as csvfile:
        spamwriter = csv.writer(csvfile, delimiter=' ',
                                quotechar='|', quoting=csv.QUOTE_MINIMAL)
        spamwriter.writerow(["CODEETBS","LIBETBS","FINESS","CODEUF","LIBUF","DATEUF1","DATEUF2","ACTIVITE","INDICATEURT2A","BUDGET","ANALYSE","CA","LIBCA","CODECR","LIBCR","CODEPOLE"])
    Ce qui donne bien le fichier eggs.csv qui contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CODEETBS LIBETBS FINESS CODEUF LIBUF DATEUF1 DATEUF2 ACTIVITE INDICATEURT2A BUDGET ANALYSE CA LIBCA CODECR LIBCR CODEPOLE
    Comme je ne comprends pas la logique du programme, je n'en ferai pas plus, mais le code présenté possède une bizarrerie: le bloc sous "if" contient "c" qui n'est défini que dans le bloc "else"...
    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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    J'ai essayé de remettre mon code un peu plus droit mais ça ne fonctionne toujours pas. L'idée globale du programme est de lire un fichier texte d'en extraire certaines parties et de les écrire dans un fichier csv.

    L'erreur que je rencontre maintenant est : Traceback (most recent call last):
    File "C:\python\SC_juridique.py", line 59, in <module>
    spamwriter.writerow(('CODEETBS','LIBETBS','FINESS','CODEUF','LIBUF','DATEUF1','DATEUF2','ACTIVITE','INDICATEURT2A','BUDGET','ANALYSE','CA','LIBCA','CODECR','LIBCR','CODEPOLE'))
    ValueError: I/O operation on closed file.

    le code complet du script :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    import sys
    import os 
    import csv
     
    argument1 = sys.argv[0]
     
    passage = 0
    codeetbs = ""
    libetbs = ""
    finess = ""
    codeuf = "" 
    libuf= ""
    dateuf1 = ""
    dateuf2 = ""
    activite = ""
    indicateurT2A = ""
    budget = ""
    analyse = ""
    ca = ""
    libca = ""
    codecr = ""
    libcr = ""
    codepole = ""
    dic_ca = dict()
    dic_cr = dict()
     
    print ("argument1  =  " ,argument1)
     
    c = csv.writer(open("C:/python/fichier/structcsv.csv", "wb"))
    f=open("C:/python/fichier/struct5-Aubusson.txt", "r")
    while 1:
        data=f.readline()
        if not data:
            break
        if data[2:4] == "UF":
            codeuf = data[5:9]
            libuf = data[167:202]
            dateuf1 = data[32:34] + "/" + data[30:32] + "/" + data[26:30]
            dateuf2 = data[40:42] + "/" + data[38:40] + "/" + data[34:38]
            activite = "Service"
            if data[319:320] == "1":
                activite = "Service"
            else:
                activite = "Magasin"
            budget = data[80:82]
            analyse = data[114:124]
            ca = data[124:128]
            libca = dic_ca[ca + "  "]
            cr = data[106:110]
            libcr = dic_cr[cr]
            codepole = data[471:483]
            indicateurT2A = data[483:495]
            with open('C:/python/fichier/structcsv.csv', 'w', newline='') as csvfile:
                spamwriter = csv.writer(csvfile, delimiter=';',
                                quotechar='|', quoting=csv.QUOTE_MINIMAL)
            if passage == 1:
                spamwriter.writerow((codeetbs,libetbs,finess,codeuf,libuf,dateuf1,dateuf2,activite,indicateurT2A,budget,analyse,ca,libca,cr,libcr,codepole))
            else:
                spamwriter.writerow(('CODEETBS','LIBETBS','FINESS','CODEUF','LIBUF','DATEUF1','DATEUF2','ACTIVITE','INDICATEURT2A','BUDGET','ANALYSE','CA','LIBCA','CODECR','LIBCR','CODEPOLE'))
                spamwriter.writerow((codeetbs,libetbs,finess,codeuf,libuf,dateuf1,dateuf2,activite,indicateurT2A,budget,analyse,ca,libca,cr,libcr,codepole))
                passage = 1
        if data[2:4] == "CA":
            dic_ca[data[5:11]] = data[100 : 135]
        if data[2:4] == "CR":
            dic_cr[data[5:9]] = data[92 : 127]
        if data[2:4] == "EJ":
            if codeetbs == "":
                codeetbs = data[5 : 7]
                libetbs = data[175 : 210]
                finess = data[166 : 175]    
     
    os.system("pause")

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    C'est normal: problème d'indentation ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            with open('C:/python/fichier/structcsv.csv', 'w', newline='') as csvfile:
                spamwriter = csv.writer(csvfile, delimiter=';',
                                quotechar='|', quoting=csv.QUOTE_MINIMAL)
            if passage == 1:
                spamwriter.writerow((codeetbs,libetbs,finess,codeuf,libuf,dateuf1,dateuf2,activite,indicateurT2A,budget,analyse,ca,libca,cr,libcr,codepole))
            else:
                spamwriter.writerow(('CODEETBS','LIBETBS','FINESS','CODEUF','LIBUF','DATEUF1','DATEUF2','ACTIVITE','INDICATEURT2A','BUDGET','ANALYSE','CA','LIBCA','CODECR','LIBCR','CODEPOLE'))
                spamwriter.writerow((codeetbs,libetbs,finess,codeuf,libuf,dateuf1,dateuf2,activite,indicateurT2A,budget,analyse,ca,libca,cr,libcr,codepole))
                passage = 1
    Toutes les lignes doivent avoir le décalage sous "with", car dès que le bloc sous "with" est terminé, le fichier est fermé.
    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

Discussions similaires

  1. Problème écriture fichier xml
    Par ludo24 dans le forum ASP
    Réponses: 23
    Dernier message: 23/06/2008, 11h48
  2. Problème création fichier CSV
    Par goboben dans le forum Documents
    Réponses: 1
    Dernier message: 04/03/2008, 17h31
  3. [CSV] problème ouverture fichier csv
    Par BernardT dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2007, 12h18
  4. Probléme import Fichier CSV
    Par wylls dans le forum Outils
    Réponses: 12
    Dernier message: 12/12/2006, 12h48
  5. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17

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